本文是Numpy相关介绍,如果需要了解Pandas和Matplotlib的知识,可以看我写的另外两篇博客,如下:
Numpy导入
import numpy as np
部分Python知识介绍
-
/ - 除法
-
// - 整除,向下取整
-
** - 乘方
-
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))
Numpy相关
-
创建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()
Numpy文件读写
(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] 取一行数据