上QQ阅读APP看书,第一时间看更新
1.2 获取元素
1.1节中介绍了生成ndarray的几种方法。那在数据生成后,如何读取我们所需要的数据呢?接下来将介绍几种常用获取数据的方法。
import numpy as np np.random.seed(2019) nd11 = np.random.random([10]) #获取指定位置的数据,获取第4个元素 nd11[3] #截取一段数据 nd11[3:6] #截取固定间隔数据 nd11[1:6:2] #倒序取数 nd11[::-2] #截取一个多维数组的一个区域内数据 nd12=np.arange(25).reshape([5,5]) nd12[1:3,1:3] #截取一个多维数组中,数值在一个值域之内的数据 nd12[(nd12>3)&(nd12<10)] #截取多维数组中,指定的行,如读取第2,3行 nd12[[1,2]] #或nd12[1:3,:] ##截取多维数组中,指定的列,如读取第2,3列 nd12[:,1:3]
如果对上面这些获取方式还不是很清楚,没关系,下面则将通过图形的方式来进一步说明,如图1-1所示,左边为表达式,右边为表达式获取的元素。注意,不同的边界,表示不同的表达式。
图1-1 获取多维数组中的元素
获取数组中的部分元素除了通过指定索引标签来实现外,还可以通过使用一些函数来实现,如通过random.choice函数从指定的样本中随机抽取数据。
import numpy as np from numpy import random as nr a=np.arange(1,25,dtype=float) c1=nr.choice(a,size=(3,4)) #size指定输出数组形状 c2=nr.choice(a,size=(3,4),replace=False) #replace缺省为True,即可重复抽取。 #下式中参数p指定每个元素对应的抽取概率,缺省为每个元素被抽取的概率相同。 c3=nr.choice(a,size=(3,4),p=a / np.sum(a)) print("随机可重复抽取") print(c1) print("随机但不重复抽取") print(c2) print("随机但按制度概率抽取") print(c3)
打印结果:
随机可重复抽取 [[ 7. 22. 19. 21.] [ 7. 5. 5. 5.] [ 7. 9. 22. 12.]] 随机但不重复抽取 [[ 21. 9. 15. 4.] [ 23. 2. 3. 7.] [ 13. 5. 6. 1.]] 随机但按制度概率抽取 [[ 15. 19. 24. 8.] [ 5. 22. 5. 14.] [ 3. 22. 13. 17.]]