创建数组: improt numpy as np data1=[1,2,3.5,6] arr1=np.array(data1) #创建一个一维数组。 data2=[[1,2,3,4],[5,6,7,8]] arr2=np.array(data2) #创建一个二维数组。 zeros_arr=np.zeros((2,3)) #创建一个2行3列的0数组。 ones_arr=np.ones((2,3)) #创建一个2行3列的1数组。 empty_arr=np.empty((2,3,4)) #创建一个三维的数组。 np.arange(15) #类似range(),就是range()返回的是一个list,arange返回的是一个数组。 np.eye(5) #创建一个5*5的单位矩阵,对角线为1,其余部分为0. np.identity(5) #作用同np.eye(5) |
一维说明: arr=np.arange(10) arr[5] #输出5 arr[5:8] #输出array([5,6,7]) arr[5:8]=12 arr #输出array([0,1,2,3,4,12,12,12,8,9]) 注意:数组的切片是原始数据的一个视图,所以对视图上的任何修改都会影响到原数组,如果需要创建一个原数组的副本,需要写成arr.copy()。 arr_slice=arr[5:8] arr_slice[1]=12345 arr_slice #输出array([0,1,2,3,4,12,12345,12,8,9]) |
多维说明: arr3d=np.array([[[1,2,3],[4,5,6]],[[7,8,9],[10,11,12]]]) arr3d[0] #输出array([[1,2,3],[4,5,6]]) arr3d[1,0] #输出array([7,8,9])这里等价于arr3d[1][0] arr3d[:1,1:2,:2] #输出array([[[4.5]]])
arr3d[0,1,:2] #输出array([4.5])
|
布尔型索引:
In [46]: from numpy.random import randn #随机生成正态分布数组
In [47]: names=np.array(['Bob','Joe','Will','Bob','Will','Joe','Joe'])
In [48]: data=randn(7,4)
Out[48]:array([[ 0.45499308, -0.91504194, 0.8234681 , 1.73401825],
[ 0.46845492, -0.46437185, 2.08760975, -0.37335943], [-0.08938842, 1.21683707, 1.81470377, -1.4222781 ], [-0.47412094, 0.73135265, -0.32416488, -0.92098348], [-0.170789 , 0.68406968, -0.32169794, -0.0801254 ], [ 1.21267635, -0.45948765, -2.64714274, -1.40673058], [ 0.95791275, 0.07200942, -1.18066411, -0.85432278]])
In [49]: data[names=='Bob']
Out[49]: array([[ 0.45499308, -0.91504194, 0.8234681 , 1.73401825], [-0.47412094, 0.73135265, -0.32416488, -0.92098348]])
#如果需要多个布尔条件的组合,使用&(和),|(或)之类的布尔运算符即可:
In [50]: mask=(names=='Bob')|(names=='Will')
In [51]: data[mask] Out[51]: array([[ 0.45499308, -0.91504194, 0.8234681 , 1.73401825], [-0.08938842, 1.21683707, 1.81470377, -1.4222781 ], [-0.47412094, 0.73135265, -0.32416488, -0.92098348], [-0.170789 , 0.68406968, -0.32169794, -0.0801254 ]]) |
random.randint(from,to,n):产生随机整数。范围为from到to,产生n个随机数。 |
cumsum():返回一个长度和数组长度相同的函数,这个函数是数组的累加函数。可以带一个axis参数。 |
cumprod():累乘函数,返回一个数组,同样可以带一个axis参数。 |
sum() |
mean() |
std,var:求标准差和方差 |
min,max:求最大最小 |
argmin,argmax:求最大和最小Ture索引 |
np.save(filename,arr):将命名空间的arr保存到filename中,如果filename没有扩展名.npy,此扩展名会自动加上。 |
np.load(filename):读取filename中的数组到命名空间中。 |
np.savez(filename,a=arr1,b=arr2):可以将命名空间的数组用任意自定义的名字存到filename中 例子: >>> outfile = TemporaryFile() >>> np.savez(outfile, x=x, y=y) >>> outfile.seek(0) >>> npzfile = np.load(outfile) >>> npzfile.files ['y', 'x'] >>> npzfile['x'] array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) |
np.loadtxt(filename,delimiter=','):读取文本文件数组,用','分割数组。 |
np.savetxt(filename,delimiter=','):作用和上面的正好相反。 |