import numpy as np
a=np.arange(5)
a.dtype,a.shape
#把arange函数创建的数组作为列表元素,并把这个列表作为参数传递给array函数,从而创建了一个3*3的矩阵
c=np.array([np.arange(3),np.arange(3),np.arange(3)])
c
c[0,1] #第一行第二列
#创建浮点小数,复数
float(12),complex(1.0)
a=np.arange(6,dtype='uint16')
b=np.arange(7,dtype='D')
a,b,a[:-1]
#numpy中每一个数组元素均为同一数据类型,数据类型对象可以给出单个数组元素在内存中占用的字节数(itemsize)
#sctypeDict.keys() 完整的数据型列表
a.dtype.itemsize
from numpy import dtype
t=np.dtype([('name',str),('numitems',int),('price',float)])
t
t['name']
comeon=np.array([('numpy',42,3.13),('bug',10,0.8)],dtype=t)
comeon
comeon[0]
b=np.arange(24).reshape(2,3,4)#生成2*3*4的矩阵
b
数据的索引和切片
print(b[0,0,0],'\n',b[:,0,0],'\n',b[0,:,:])
b[1,...],b[1]#等同
b[0,1,],b[0,:,-1]
b[0,::-1,-1]#从最后一行取起
b[0,::2,-1]#隔行取
b[::-1]#从第俄格矩阵取起
ravel(),flatten()
两者所要实现的功能是一致的(将多维数组降位一维)。
这点从两个单词的意也可以看出来,ravel(散开,解开),flatten(变平)。
两者的区别在于返回拷贝(copy)还是返回视图(view)
numpy.flatten()返回一份拷贝,对拷贝所做的修改不会影响(reflects)原始矩阵,而numpy.ravel()返回的是视图(view,也颇有几分C/C++引用reference的意味),会影响(reflects)原始矩阵
shape(),transpose()
resize()数组维度的更改
b.ravel()
b.flatten()
b.shape=(6,4)
b
b.transpose()
b.resize((2,12))
b
数组的组合
a=np.arange(9).reshape(3,3)
c=2*a #可直接做运算
a,c
hstack((a,c))==concatenate((a,c),axis=1)
hstack(value)
value必须具有相同的数据结构,数据类型不限,可以是python的列表或者元祖,或者是numpy列表
hstack会将多个value(value_one, value_two)的相同维度的数值组合在一起,并以同value同样的数据结构返回numpy数组
np.hstack((a,c))
np.hstack([a,c])
np.concatenate((a,c),axis=1)
np.vstack((a,c))
np.concatenate((a,c),0)
np.dstack((a,c))
oned=np.arange(2)
twice_oned=2*oned
onedcombine=np.column_stack((oned,twice_oned))
oned,twice_oned,onedcombine
np.column_stack((a,c))
np.row_stack((oned,twice_oned))
np.row_stack((a,c))
数组的分割
a #3*3
np.hsplit(a,3) #从列的方向上分割成3个数组
np.split(a,3,axis=1)
np.split(a,3,axis=0)##从行的方向上分割成3个数组
np.vsplit(a,3)
d=np.arange(27).reshape(3,3,3)
d
np.dsplit(d,3)
数组的属性和数组的转换
b
b.ndim
b.size
b.itemsize
b.nbytes
b.resize
b.T
b.transpose
c=np.array([1,1+9j,"av"])
c
c.ndim
d=np.array([2+7j,9j,8+2j])
d
d.real #取实数部分
d.imag #取虚数部分
c.dtype
d.dtype
b.dtype
b=np.arange(9).reshape(3,3)
f=b.flat
f
for item in f:print(item)
b.flat[2]
b.flat[[1,4]]
b.flat[[1,4]]
b.flat[[1,3]]=6
b
b.tolist() #将数组或者矩阵转换成列表
b.astype(float)