numpy库

本文详细介绍了numpy库,涵盖数组创建、属性、缺失值处理、特殊数组和np.random模块等内容,还讨论了数组排序、重塑、索引、切片、合并与运算等操作。此外,文章还涉及了通用函数、ndarray实例方法、字符串函数,以及矩阵运算、协方差和numpy其他实用功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

numpy库

目录
一、数组
1、数组创建
2、数组属性
3、缺失值问题
4、特殊数组
5、np.random 模块
6、数组的排序
7、数组的重塑
8、索引和切片
9、数组的合并
10、数组的运算
二、np下面的通用函数
三、ndarry实例的常用方法
四、np.char模块下面的字符串函数
五、矩阵运算、协方差
六、np其他常用函数
一、数组
1、数组创建
import numpy as np 
dir(np)  # 查看np库中的函数
np.array([['张','男','19'],['李','女','20']],dtype='object') 
# 当输入不同数据类型的元素时,需要指明数据类型,object使用最多,否则全部转化为字符串
np.arange(1,5,0.4)  # 随机快速生成数组
np.arange(10,0,-1)  # 倒序生成 
np.linspace(1,8,5)   # 第一、二位数是起始和结束位置,第三位意思是等分多少份,包含最后一位
np.linspace(1,8,5,endpoint=False)   # 不包含最后一位,再等分5份,表示1和8起始点在一个地方
#如何查看numpy定义了哪些dtype? 
np.typeDict 

# 特殊元素组成的数组,可以是集合和字典等
a=np.array([{1,2},{3,4},{5,6}],dtype="object") 
#注意这里dtype="object"可以省略。 
#a是一个一维数组,它的shape是(3,)
2、数组属性
a.ndim    # 返回数组维度
b.shape   # 返回一个元组, 表示2行3列
a.size    # 返回数组包含多少个元素
b.dtype   #返回数据类型
a.itemsize   # 表示一个元素占用多少个字节
a.size * a.itemsize  # 返回数组占用多少个字节
3、缺失值问题
np.nan  # 引用缺失值函数
a.dtype  # 缺失值nan默认为float,所有它会将前面的整数型也转换成浮点型
np.array([1,2,None]) # 缺失值None会默认加上 dtype=object,所有库都可以识别
out[5]:
array([1, 2, None], dtype=object)
np.array(['1','2',np.nan])  # 缺失值nan 需要定义类型为object,只有np库或关联的库可识别

np.isnan(a)  #识别缺失值,只能识别数值型,返回布尔值,应用范围非常小
4、特殊数组
np.zeros((2,3))   # 生成全部为0的数组,输入的必须为元组的形式
np.ones((3,4))    # 生成全部为1的数组
np.eye(2)         # 生成单位矩阵
np.diag([1,2,3,4])  # 生成对角阵
np.empty((2,3))     # 随机生成没有初始化的数组
5、np.random 模块
np.random.seed(100)    # 指定随机种子,保证每次生成的随机数都是一样
np.random.rand(3,4)    # 在0到1之间随机生成
np.random.uniform(10,50,(4,3))  # 第一、二位是起始范围,第三位元组表示需要生成的行列数
np.random.randn(3,4)      #标准正态分布
np.random.randint(10,30,(3,4))   # 第一、二位是起始范围,第三位元组表示需要生成的行列数
np.random.choice(['张三','李四','王五'],10)  # 从前面列表中随机抽取10个

a= np.array([1,2,3])
np.random.shuffle(a)        #随机播放,直接影响数组a

# 累计求和
a.cumsum() 

在这里插入图片描述

6、数组的排序
np.argsort(a)    # 返回索引值升序排列
np.sort(a)      # 按元素大小升序,不会改变数组a
a.sort()        #直接改变数组a
np.argsort(b,axis=0)   # axis=0,按列排序,返回索引值,=1时,按行排序
sorted(b,key=lambda x:x[1]) 
#默认进行升序排序,可以通过reverse参数进行设定
7、数组的重塑
np.arange(15).reshape(3,5)   # 随机生成一个数组,然后划分3行5列
np.arange(6).reshape(2,-1)   # -1 表示替代列数(函数自行计算列数),此题-1就表示6/2=3列
c.ravel()      # 多维数组压缩到一维数组
np.tile(a,(3,3))     # 按a,行和列分别扩大3倍 
8、索引和切片
a[[0,2]]   # 切取不连续的行,取一个不连续的行或列时候就需要用中括号,也就是列表
a[1:3,1]   # 逗号左边表示行,右边表示列数

# 布尔索引
c[c[:,0]<0.5] # 切取第一列小于0.5的行
9、数组的合并
np.concatenate((a,a),axis=0)  # axis=0,增加行数,纵向合并
np.concatenate((a,a),axis=1)    # axis=0,增加行数,横向合并
10、数组的运算
a+b     # a和b都是数组,a和b的对应元素相加
a*b     # 对应元素相乘

# 广播运算,后缘维度相同的两个数组也可以运算,也就是列数相同,又叫沿着第0维度广播
a = np.array([[0,0,0],
           [1,1,1],
           [2,2,2],
           [3,3,3]])
b= np.array([1,2,3])
a+b
out[8]:
array([[1, 2, 3],
       [2, 3, 4],
       [3, 4, 5],
       [4, 5, 6]])
#某个数组一个维度为1 ,其他维度都相同的两个数组也可以运算,又叫沿着第1维度广播   
a = np.array([[0,0,0],   
           [1,1,1],
           [2,2,2],
           [3,3,3]])
b=np.array([[1],[2],[3],[4]]) 
a+b
out[12]]:
array([[1, 1, 1],
       [3, 3, 3],
       [5, 5, 5],
       [7, 7, 7]])
二、np下面的通用函数
# 一元通用函数包括np.abs、np.sqrt、np.square等。
np.add(a,b)        # a+b,对应元素相加
np.multiply(a,b)  # a*b,对应元素相乘
np.maximum(a,b)  # 两个数组对应位置的元素相比,返回较大值
三、ndarry实例的常用方法
a.T             # 矩阵转置
a.transpose(1,0) # 矩阵转置,应用范围更广,三维使用
a.astype('str')  # 转换数据类型
a.tolist()     # 转换成列表
四、np.char模块下面的字符串函数
np.char.add(a,b)  # 连接对应位置的字符串
np.char.upper(a)  # 转换成大写
d=np.char.split(a,sep=" ")   # 将字符串转换成列表,sep参数是设置分隔符
五、矩阵运算、协方差
# 点积 
a.dot(b)  # 方法1
a @ b    # 方法2
np.matmul(a,b) # 方法3

# 内积运算 一个矩阵乘以另外一个矩阵的转置就是内积
np.inner(a,a)  # 方法1
np.dot(a,a.T)  # 方法2

# 求行列式和逆矩阵,矩阵必须是方阵
np.linalg.det(a)  # 行列式
np.linalg.inv(a)  # 逆矩阵

# 二维数组的协方差矩阵
data1=np.random.rand(3,10)   #随机生成一个二维数组
np.cov(data1)      #可以将每一行看做一个X,3个X的协方差,输出3*3的列表
六、np其他常用函数
sum([1,2,3],5) # 5是起始值,即5+1+2+3=11
a = np.array([[1,2,3],
              [3,4,5]])
np.sum(a,1)   # 1 表示轴的意思,也就是行相加,列不变,返回([6,12])
sum(a,2)   # 每列分别相加再加2,返回([6,8,10])
np.max(a)  # 返回数组中最大的值5
a.argmin(a)  #返回数组中最小的值1
np.max(a,0)   # 0 表示0轴的意思,返回每一列的最大值([3,4,5])
a.argmax(axis=0)       # 返回每一列的最大值的索引([1,1,1],dytype=int64)

np.sum(a,axis=0,keepdims=True)  # 每列和二维数组
out[12]:
array([[4, 6, 8]])

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值