Numpy学习笔记第一篇

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)

猜你喜欢

转载自blog.csdn.net/qq_42052864/article/details/81591448