创建数据最简单的办法是使用array函数,可以把一个列表转换成数组
比如:
data=[[1,2,3,4,5],[6,7,8,9,10]]
array=np.array(data)
numpy中的zeros和ones可以创建指定长度或形状的全为0或者全为1的数组,empty创建一个没有任何具体值的数组。
np.zeros((1,2))#创建一行二列的全为0的数组
np.empty((4,5,4))
还有ones_like,zeros_like,empty_like,eye和identity(对角阵)以及
arange【np.arange(min,max,stride)】
numpy的数据类型查看通过dtype,数据类型转变通过astype(np.int64)
#bool,complex64,float64
大小相等的数组之间的任何算数运算都会将运算应用到元素级:
array=np.array([[1,2,3,4,5],[6,7,8,9,10]])
array*array
array+array
array-array
同样,数组和标量的算数运算也会将那个标量值传播到各个元素:
1/array
array*5
不同大小的数组之间的运算叫做广播:
array=np.arange(2,22,2)
#元素索引
array[4]
#切片索引
array[2:5]
#高纬度的花式切片
arr2d[:2,:2]#只有冒号表示选取整个轴
arr2d[:2,:2]=0#对切片表达式的赋值操作将会被扩散到整个选区
arr=np.empty((8,4))
for i in range(8):
arr[i]=i
arr[[4,3,0,6]]
arr=np.arange(15).reshape((3,5))
arr.T#矩阵转置
arr1=np.random.randn(6,3)
np.dot(arr.T,arr1)#计算矩阵内积
#swapaxes方法也是转置
arr.T=arr.swapaxes(1,2)
#对于高维数组,它的转置需要一个由轴编号组成的元组才能进行转置
arr=np.arange(16).reshape((2,2,4))
arr.transpose((1,0,2))
sqrt,exp,maximun(元素级最大值)
abs,fabs#绝对值
square#平方
log10,log2,log1p=log(1+x)
sign#正数1,0,负数-1
ceil
modf#返回数组的小数和整数部分
isnan,cos,cosh,sin,sinh,tan,tanh,,arccos,arcsin,arctan
add,subtract,multiply,divide
mod,equal,not_equal
sum #求和运算
mean #算数平均值
std,var#标准差和方差
min,max#最大值和最小值
argmin,argmax#分别为最大值和最小值的索引
cumsum #所有元素的累计和
cumprod#所有元素的累计积
sort#排序
unique(x)#计算x中的唯一值
intersect1d(x,y)#计算x和y的公共元素
union1d(x,y)#计算x和y的并集
in1d(x,y)#得到一个x是否包含于y的布尔型数组
setdiff1d(x,y)#集合的差
setxor1d(x,y)#集合的对称差
#np.save和np.load是读写磁盘数组数据的两个主要函数
arr=np.arange(10)
np.save('some_array',arr)
np.load('some_array.npy')
#savez可以将多个数组保存到一个压缩文件中
np.savez('array_archive',a=arr,b=arr1)
arch=np.load('array_archive.npz')
arch['b']
#存取文本文件
#np.loadtxt或者np.genfromtxt
arr=np.loadtxt('1.txt',delimiter=',')#delimiter表示分割的字符
#np.savetxt
矩阵乘法的dot函数
inv是矩阵求逆
trace是计算对角线元素之和
det是计算矩阵行列式
qr是计算QR分解
svd是奇异值分解
solve是解线性方程组Ax=b
lstsq是解Ax=b的最小二乘解