numpy
在本文档中,变量是np.array,不是list
(a>0)&(a<2),#判断各个元素是否大于0,返回一np.array,元素为False或True
a[a>0]#找出a中大于0的数
a*a#点乘
np.dot(a,a)#矩阵乘法
np.array([[1,2,3],[2,3,4]]),会把里面的列表也转换成array,即np.array([[1,2,3],[2,3,4]])得到的是一多维数组
np.array([[1,2,3],[3,4]]),由于里面的列表长度不同,只能保持为list
np.array([1,2,3],dtype=np.float64)
np.array([1,2,3],dtype=np.int32)
dtype是Numpy如此强大和灵活的原因之一。它们直接映射到相应的机器表示,这使得“读写磁盘上的二进制数据流”
以及“集成低级语言代码”等工作变得简单。
Python里的赋值,实质上是引用,而不是复制数据,所以修改其中一些值,原始数据也会改变。
在多维数组中,各索引位置上的元素不再是标量,而是数组
arr = np.arange(32).reshape((8,4))
arr[[1,5,7,2],[0,3,1,2]]#取二维数组元素(1,0),(5,3),(7,1),(2,2)
ufunc
通用函数是一种对ndarray中的数据执行元素级运算的函数。可以将其看作简单函数(接受一个或多个标量值,
并产生一个或多个标量值)的矢量化包装器
x=y=[1,2,3]
np.maximum(x,y)

np.where(con,arr,arr)#第二个参数可以是数组,也可以是标量
arr=np.random.randn(4,4)
如 np.where(arr>0,2,-2)#对于arr生成的数组,大于0的置为2,否则为-2
np.where(arr>0,2,arr)#只将正数设置为2.
xarr = np.array([1,2,3,4,5])
yarr= np.array([2,3,4,5,6])
cond=np.array([True,False,True,True,True])
np.where(cond,xarr,yarr) #array([1,3,3,4,5])
聚合(aggregation),约简(reduction)

数组的文件输入输出
arr=np.arange(10)
np.save('some_array',arr)
如果文件路径末尾没有扩展名.npy.则该扩展名会被自动加上,然后可以通过np.load读取
np.savez可以将多个数组保存到一个压缩文件,将数组以关键字参数的形式传入即可:
np.savez('array_archive.npz',a=arr,b=arr)
arch=np.load('array_archive.npz')
arch['b']
arr=np.loadtxt('test.txt',delimiter=',')#以逗号为分隔符

浙公网安备 33010602011771号