- 随机正态分布:numpy.random.randn(7,4) 返回7行4列的随机数,且呈现正态分布
- n维数组对象ndarray : 能够对整个数据执行操作:类似于*10
- shape:形状 dtype:类型 ndim:维数
- 创建ndarray:
1. 先创建列表data1=[1,2,4,5]或者data1=[[2,3,5,6][8,9,7,5]]
2. 转换:arr1=np.array(data1)
或直接这样
np.zeros(10)
np.ones((3,6))
np.empty((2,3,2)) - range数组版:np.arange(15)
- 创建N*N的单位矩阵:eye、identity
- 从零到23赋给3*8:np.arange(24).reshape(3,8)
数据类型
- int8 uint8 int16 int32 int64……
- complex64 128
- bool
- object
- string_ 固定的字符串类型,例如创建一个长度为5的字符串,应使用S10
- unicode 和S一样使用
- 定义类型:arr1=np.array(data1,dtype=np.int32)
- 转化类型:arr2=arr1.astype(mp.int64)
索引
- data[names == ‘Bob’,2] : 表示行为 names中值为Bob的索引,列为2的数组
- 以及其他布尔条件:!= , & , |
- data[data<0]=0 : 会令data中值小于0的数等于0
- data[names!=’Joe’]=7
- data[[4,3,2,3]]表示选择data的第4,3,2,3行,当列表数为负数:data[[-1]]:选择倒数第一行
- arr[[1,3,5,7],[2,4,6,8]] :选择四个数分别是[1,2],[3,4],[5,6]…
- arr[[1,3,5,7]][:,[2,4,6,8]]或者arr[np.ix_([1,3,5,7],[2,4,6,8])],表示提取了4*4的矩阵,为第1,3,5,7行中2,4,6,8列的数
转换(设arr为二维数组)
- 二维数组转置:arr.T
- 对于高维数组,使用轴转置:arr.transpose((1,0,2))或swapaxes(1,2)
- 点积:np.dot(a,b)
通用函数(一元)
- np.sqrt(a)
- np.abs(a) fabs(a)
- np.square(a) 平方
- np.exp(a)
- log、log10、log2
- sign 返回符号(1,0,-1)
- ceil 大于该值的最小整数
- floor 小于改值的最大整数
- rint 四舍五入
- modf 返回两个数组,分别是整数和小数部分
- isnan 、isfinite
- cos sin tan cosh sinh tanh
- arccos arcsin arctan(h)
通用函数(二元)
- add
- subtract 第一个数组减第二个
- multiply数组元素相乘
- divide整除
- power(a,b) A^B
- maximum minimum
- mod 求模数
- copysign 将第二个数组的值的符号复制给第一个数组中的值
- greater、greater_equal 、less、less_equal、equal、not_equal 返回布尔型
统计方法
- np.meshgrid(a,b) 接受两个一维数组,并产生两个二维矩阵,对应两个数组中所有的(X,Y)对,将两个一维数组变为二维矩阵,且第一个矩阵的行数是a的个数,列数是b的个数,第二个相反
- arr.mean()或np.mean(arr)平均数 //而当加入axis=1以后就是将一个矩阵的每一行向量求平均
- arr.sum() 而当加入axis=1以后就是将一个矩阵的每一行向量相加
- std、var 分别为标准差和方差,自由度可调
- cumsum 、 cumprod 累计和、累计积
- min、max
- argmin 、argmax 最大值最小值的索引
布尔型数组
-
- 有趣:
arr = randn(100) (arr>0).sum()
- 有趣:
排序
- arr.sort()
唯一化
- np.unique(names) //唯一化并排序
数组的集合运算
- unqiue(x) 唯一化
- intersect1d(x,y) x与y的交集,且有序
- union1d(x,y) x与y的并集,且有序
- in1d(x,y) x的元素是否在Y中的布尔型数组
- setdiff1d(x,y) 集合的差,在x中且不在y中
- setxor1d(x,y) 只在x,y其中的一个的元素
文件输入输出
- 保存 np.save(“some_array”,arr) arr是要保存的东西,默认是保存在扩展名为.npy的文件中
- np.load(‘some_array’)读取磁盘上的数组
- 多个数组保存在压缩文件中 np.savez(“array.npz”,a=arr,b=arr)
- 加载.npz文件一样:arch=np.load(‘some_array’) ,然后使用arch[‘b’]来引用
读取文本文件txt
- 以逗号分隔的csv文件后缀是txt的文件:np.loadtxt(“array.txt”,delimiter=’,’)
- np.savetxt执行相反操作
线性代数
-
- 矩阵相乘:x.dot(y)或者np.dot(x,y)
- numpy.linalg有一组标准的矩阵分解运算以及诸如求逆和行列式之类的东西
随机数生成
- 标准正态分布的4*4样本数组np.random.normal(size=(4,4))
- 确定随机数的种子seed
- 返回一个序列的随机排列permutation
- 对一个序列的随机排列shuffle
- 均匀分布的样本值rand
- randint 从给定上下限随机选取证书
- randn产生正态分布的样本值
- binomial二项分布的样本值
- normal 正态分布的样本值
- beta 产生beta分布的样本值
- chisquare卡方分布的样本值
- gamma 伽马分布的样本值
- uniform 产生[0,1)中均匀分布的样本值
where
- numpy.where函数是三元表达式x if condition else y的矢量化版本。定义一个布尔数组和两个值数组:
>> xarr=np.array([1.1,1.2,1.3,1.4,1.5])
>>> yarr=np.array([2.1,2.2,2.3,2.4,2.5])
>>> cond=np.array([True,False,True,True,False])reslut=np.where(cond,xarr,yarr)
结果是[1.1 , 2.2 , 1.3 , 1.4 , 2.5 ]