Numpy基础使用
numpy.ndarray:
创建
-
numpy.ndarray中所有元素必须是同一类型,否则会自动向下转换:int—>float—>str
-
创建方式
np.array([[1, 3, 5], [2, 4, 6]], dtype=np.int)
np.asarray(ndarray, dtype=np.object)
np.arange(0, 100, 10)
np.random.rand(3, 2)
np.random.randint(10, 20, size=(3, 2))
np.linspace(0, 10, 10)
np.logspace(0, 1, 5)
np.r_[0:10:2]
np.c_[0:5:1]
np.zeros((2, 3))
np.ones((5, 2))
np.zeros_like(a)
np.ones_like(a)
a = np.empty((3, 3))
a.fill(1)
np.identity(5)
属性与方法
-
常用属性
ndarray.shape # 形状
ndarray.dtype # 数据类型
ndarray.size # 元素个数
ndarray.ndim # 数据维度
-
常用方法
-
# 深拷贝
ndarray.copy()
# 数值计算
ndarray.min/max(axis=None) # 最小/大值
ndarray.argmin/argmax(axis=None) # 最小/大值索引
ndarray.sum(axis=None) # 累加
ndarray.prod(axis=None) # 累乘
ndarray.mean(axis=None) # 平均值
ndarray.std(axis=None) # 标准差
ndarray.var(axis=None) # 方差
ndarray.clip(min, max) # 修剪
ndarray.round(decimals=0) # 四舍五入
索引与切片
-
数值索引
ndarray[2:, :-1]
ndarray[[2, 4, 6], [1, 3, 5]]
ndarray[np.where(ndarray > 10)]
-
bool索引:ndarray[bool_ndarray]
# bool_ndarray的获取
# 运算
ndarray > 10
ndarray1 == ndarray2
# 逻辑运算
np.logical_and(ndarray1, ndarray2)
np.logical_or(ndarray1, ndarray2)
运算
-
数值运算
np.sum(ndarray, axis=None)
-
矩阵运算
np.multiply(ndarray, ndarray) # 对应位置元素相乘
np.dot(ndarray, ndarray) # 矩阵乘法
- 排序
np.sort(ndarray, axis=-1)np.argsort(ndarray, axis=-1)
np.searchsorted(a, v, side='left') # v中元素插入a后的位置索引
np.lexsort(keys, axis=None)
- 数组形状操作
ndarray.shape = 2, 5 # 直接修改
ndarray[np.newaxis, :] # 增加维度
ndarray.squeeze() # 压缩多余维度
ndarray.transpose() # 转置
ndarray.T # 转置
-
数组拼接
np.concatenate((ndarray, ndarray), axis=None) # 拼接,默认axis等同于垂直堆放np.stack((ndarray, ndarray)) # 堆放
np.hstack((ndarray, ndarray)) # 水平堆放
np.vstack((ndarray, ndarray)) # 垂直堆放
-
随机模块
np.random.rand(3, 2) # 0-1之间随机小数填充,shape=3, 2
np.random.randint(low, high=None, size=None, dtype=None) # 随机整数填充,shape=size
np.normal(loc=0.0, scale=1.0, size=None) # 高斯正态分布
np.random.shuffle(ndarray) # 打乱、洗牌
np.set_printoptions(precision=2) # 设置小数位
np.random.seed(100) # 指定随机种子,可以随机出相同结果
-
文件操作
np.savetxt('test.txt', ndarray, fmt='%d', delimiter=',')
np.loadtxt('test.txt', delimiter=',', skiprows=1)np.save('test.npy', ndarray)
np.load('test.npy')