1.ndarray创建
arr=np.array(list,tuple) #一维二维都可创建;
np.zeros((3,3)) #创建全零数组;
np.ones((3,3)) #创建全一数组;
np.empty() #创建未初始化数组;
np.arange(a,b,c) # [a,b) c为步长可有可无,没有默认为1;
np.linspace(0,10,5) #创建一个等差数列,元素个数是5,从0开始计算,10为等差数列的终值;
np.logspace(0,2,5) #创建一个等比数列,0表示10的0次方,2表示10的2次方,5为最终生成的元素个数;
np.random.random(4,2,3) #创建4个2行3列的数组。实际上是三维的:2,3各一维,4看作一个整体,算是一维。
np.random.ran(9) #创建9个0到1的随机值
np.random.randn(3,3) #正态分布
np.random.randint(1,9,(3,3)) #创建一个3*3的数组,数组元素为1到9之间的随机整数(int)
2.ndarray对象属性
arr.ndim #数组轴 的个数,也叫轶/维度
arr.shape #数组的维度
reshape 可以修改数组形状 -1代表自动分配
arr.size #元素个数
arr.dtype #元素的数据类型
arr.itemsize #数组中每个元素的字节大小
3.ndarray运算
数组与标量:
数组的全部元素都会参与跟这个标量之间的运算:+ - * / 幂运算 。
数组与数组:
也叫广播,两个数组对应维度的行与行,列与列发生运算,与矩阵不同。2*2的与2*2的就是对应运算,而2*3与1*3就是把后者跟前者的行与列分别对应运算,也就是1跟2的两行都运算,共两次,生成新的数组维度依然是2*3。
4.ndarray多维数组的索引、切片、花式索引、布尔索引
arr[3][1][2] #第三个数组的第二行的第三列(也可以说是第三个)元素;
arr[1][0][1:3] #切片就是查看很多元素,切片的目的在于每个维度取值或查看元素的范围的限定;还可以利用切片修改列表的元素值;
arr[np.ix_([0,3,5],[0,2,3])] #使用索引器分别获取0,3,5行的0,2,3列;
arr[[0,3,5],[0,2,3]] # 获取(0,0),(3,2),(5,3)的位置处的元素值;
“布尔类型”贴一个例子:
import numpy as np
names=np.array(['joe','tom','anne'])
scores=np.array([
[70,80,90],
[77,88,91],
[80,90,70]
])
classes=np.array(['语文','数学','英语'])
5.ndarray数组的转置与轴对换
arr(5,8).transpose()=arr(8,5) / arr(5,8).T=arr(8,5)
arr.transpose(1,2,0) #轴对换 不是很懂,以后遇到的话再研究
6.ndarray数组的拉伸与合并
np.tile(arr,2) #横向拉伸两倍
np.tile(arr,(3,1)) #纵向拉伸3倍,横向拉伸1倍
np.stack(axis=1,2 默认为0) #axis=0相当于从第一行往下依次添加,axis=1相当于从第一列从左往右添加,axis=2相当于矩阵的转置
np.hstack((arr1,arr2)) #横向合并
np.vstack((arr1,arr2)) #纵向合并
7.ndarray聚合函数/一元/二元函数
amin() amax() mean() #平均值 |可由此计算方差、标准差、方差;
np.where(condition,arr1,arr2) #满足condition取出arr1的满足条件的元素,反之取arr2的元素;
np.unique(目标数组) #去重。
一元/二元函数有表可查询。