本文是Numpy相关介绍,如果需要了解Pandas和Matplotlib的知识,可以看我写的另外两篇博客,如下:
import numpy as np
/ - 除法
// - 整除,向下取整
** - 乘方
math.sin - sin()在math库内
字典遍历
for key,val in dict.items():
print(key,val)
函数map,映射作用,可替代循环
out = list(map(func, list))
函数filter,映射后过滤,保留结果为True的项
out = list(filter(BOOL类型的 func, list))
创建ndarray,可以传入列表、元组、两者混合物[(),[]]
dtype 可指定数据的类型
a = np.array([1,2,3,4],dtype=int)
检测a是否为ndarray
type(a)
检测a中数据的类型
a.dtype
判定a是几维数组
a.ndim
判定a中数据的总数
a.size
判定a的形状
a.shape
生成全0/全1矩阵,传入[3,3]或者(3,3)均可,不可np.zeros(3,3)
a = np.zeros((3,3))
a = np.ones([4,4])
生成序列0-9,默认间隔为1
np.arange(0,10)
生成序列[0,3,6,9],间隔为3
np.arange(0,12,3)
生成0-12间的序列(包括12),[0,4,8,12],一共4个数
np.linspace(0,12,4)
生成0-1间的随机数
np.random.random()
生成low - high-1 范围内的整数随机数,共total个
np.random.randint(low,high,total)
加减乘除:
ndarray的 ±*/ 运算 均是元素级的,逐个运算
矩阵积:
np.dot(A,B)
A.dot(B)
numpy内置了许多数学函数
np.sin()
np.sqrt()
矩阵变形
A = np.arange(0,9).reshape(3,3)
A.shape = (3,3)
多维矩阵转化为一维
A.ravel()
选取某个元素
A[1,2]
A[[0,1],2]
逐个遍历元素
for i in A.flat:
print(i)
按照行或者列处理数据(axis=0 是列,=1 是行):
np.apply_along_axis(np.mean, axis=0,arr=A)
(1)多维数组两两合并
np.vstack((A,B)) 竖直合并
np.hstack((A,B)) 水平合并
np.concatenate([A,B],axis=0) 竖向合并
np.concatenate([A,B],axis=1) 横向合并
(2)一维数组多个合并
np.column_stack((a,b,c)) 每个一维数组作为一列
np.row_stack((a,b,c)) 每个一维数组作为一行
(1)将数组分为两部分
[B,C] = np.hsplit(A,2) 竖着切分,分为两部分
[B,C] = np.vsplit(A,2) 横着切分,分为两部分
(2)将数组分为多部分
[A1,A2,A3] = np.split(A,[1,3],axis=1) 竖着切分,分为三部分,分为0列、1和2列、3列
[A1,A2,A3] = np.split(A,[1,3],axis=0) 横着切分,分为三部分,分为0行、1和2行、3行
数组复制,产生新对象
A.copy()
(1)二进制文件读写
写:np.save('A', A) 保存为A.npy
读:A = np.load('A.npy')
(2)读取csv文件
names 是指数据是否有列标题,有则为True
data = np.genfromtxt('data.csv', deletechars=',', names=True)
data['列标题'] 取一列数据
data[0] 取一行数据