思维导图:
基本操作
import numpy as np # 一维数组 t1 = np.arange(12) print(t1.shape) # 二维数组 t2 = np.array([[1,2,3,4],[5,6,7,8]]) print(t2.shape) # 改变数组维数 print(t1.reshape(3,4)) # 一维变二维 print(t2.reshape(8,)) # 二维变一维 # 将多维数组展开 print(t2.flatten()) print(t2) # 数组的计算 # 数组和数字计算 print(t2+2) # 将计算过程应用于数组内的每一个数据 print(t2/2) print(t2/0) # 数组和数组计算,若形状一样,对应位置进行计算 t3 = np.arange(100,108).reshape((2,4)) print(t3) print(t3*t2) print(t3+t2) # 两个数组维度不同时,行相同按行计算,列相同按列计算 # 两个数组维度不同且行列都不相同,无法进行计算 # 如果是三维和二维数组的话,只要三维的后两个和二维相同就可以计算
再来一波基本操作
import numpy as np import random # 生成数组 t1 = np.array([1,2,3]) print(t1) print(type(t1)) t2 = np.array(range(10)) print(t2) t3 = np.arange(0,10,2) print(t3) # 查看数组内元素的类型 print(t3.dtype) # 手动指定数组内元素类型 t4 = np.array(range(1,4),dtype=float) print(t4) print(t4.dtype) # numpy中的bool类型 t5 = np.array([1,1,0,1,0,2],dtype=bool) print(t5) # 调整数据类型 t6 = t5.astype("int8") print(t6) print(t6.dtype) # numpy中的小数 t7 = np.array([random.random() for i in range(10)]) print(t7) print(t7.dtype) # 修改小数位数 t8 = np.round(t7,2) print(t8)
从文件中读取数据
import numpy as np us_file_path = './you.csv' uk_file_path = './to.csv' t1 = np.loadtxt(us_file_path,delimiter=',',dtype='int',unpack=True) # 按逗号分隔,按int类型读取,行列对调 print(t1)
numpy索引切片
import numpy as np t1 = np.arange(12).reshape((3,4)) print(t1) print('*'*100) # 取行 print(t1[2]) print('*'*100) print(t1[1:]) # 取不连续的多行 print('*'*100) print(t1[[0,2]]) # 两个[] # 取列 print('$'*100) print(t1[:,1]) # 取连续的多列 print(t1[:,0:2]) # 取不连续的多列 print(t1[:,[0,2]]) # 取行和列的值,如取第3行和第4列 print(t1[2,3]) # 取多行和多列,取第1行到底3行,第1列到第3列 # 取的是行和列交叉点的位置 print(t1[0:2,0:2]) # 取多个不相邻的点 # 取的是(0,0),(2,1),(2,3) print('#'*100) c = t1[[0,2,2],[0,1,3]] print(c)
赋值
import numpy as np t1 = np.arange(12).reshape((3,4)) print(t1) print('*'*100) # 将t1中大于0的变成88 t1[t1>8]=88 print(t1) # 判断式,将小于等于8的替换成100,其余的替换成300 print(np.where(t1<=8,100,300)) # 剪裁clip,小于5的替换成5,大于7的替换成7 print(t1.clip(5,7)) print(t1) # 将其中数字转化成nan t1 = t1.astype(float) t1[2,2] = np.nan print(t1)
数组拼接
import numpy as np us = './yihao' uk = './erhao' # 加载国家数据 us_data = np.loadtxt(us,delimiter=',',dtype=int) uk_data = np.loadtxt(uk,delimiter=',',dtype=int) # 添加国家信息 # 构造全为0,1的数据 zeros_data = np.zeros((us_data.shape[0],1)).astype(int) ones_data = np.ones((uk_data.shape[0],1)).astype(int) # 分别添加一列全为0,1的数组 us_data = np.hstack((us_data,zeros_data)) uk_data = np.hstack((uk_data,ones_data)) # 拼接两组数据 final_data = np.vstack(us_data,uk_data) print(final_data)