做ppt好的模板下载网站有哪些,2018淘宝客网站开发,网站子目录怎么做,产品推广方式ndarray支持在多维数组上的切片操作。为了方便起见#xff0c;我们可以用一个省略号#xff08;...#xff09;来
表示遍历剩下的维度。
#xff08;1#xff09;举例来说#xff0c;我们先用arange函数创建一个数组并改变其维度#xff0c;使之变成一个三维数组#x…ndarray支持在多维数组上的切片操作。为了方便起见我们可以用一个省略号...来
表示遍历剩下的维度。
1举例来说我们先用arange函数创建一个数组并改变其维度使之变成一个三维数组bnp.arange(24).reshape(2,3,4)b.shape
(2L, 3L, 4L)b
array([[[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]],
[[12, 13, 14, 15],
[16, 17, 18, 19],
[20, 21, 22, 23]]])
多维数组b中有0~23的整数共24个元素是一个2×3×4的三维数组。我们可以形象地把它看做一个两层楼建筑每层楼有12个房间并排列成3行4列。或者我们也可以将其看成是电子表格中工作表sheet、行和列的关系。你可能已经猜到reshape函数的作用是改变数组的“形状”也就是改变数组的维度其参数为一个正整数元组分别指定数组在每个维度上的大小。如果指定的维度和数组的元素数目不相吻合函数将抛出异常。
2我们可以用三维坐标来选定任意一个房间即楼层、行号和列号。例如选定第1层楼、第1行、第1列的房间也可以说是第0层楼、第0行、第0列这只是习惯问题可以这样表示b[0,0,0]
0
(3)如果我们不关心楼层也就是说要选取所有楼层的第1行、第1列的房间那么可以将第1个下标用英文标点的冒号:来代替b[:,0,0]
array([0, 12])
b[0]
array([[0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
我们还可以这样写选取第1层楼的所有房间b[0,:,:]
array([[0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
多个冒号可以用一个省略号...来代替因此上面的代码等价于b[0,...]array([[0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
进而可以选取第1层楼、第2排的所有房间b[0,1]
array([4,5, 6, 7])
(4) 再进一步我们可以在上面的数组切片中间隔地选定元素b[0,1,::2]
array([4,6])
(5) 如果要选取所有楼层的位于第2列的房间即不指定楼层和行号用如下代码即可b[...,1]
array([[1, 5, 9],
[13, 17, 21]])
类似地我们可以选取所有位于第2行的房间而不指定楼层和列号b[:,1]
array([[4, 5, 6, 7],
[16, 17, 18, 19]])
如果要选取第1层楼的所有位于第2列的房间在对应的两个维度上指定即可b[0,:,1]
array([1,5, 9])
(6)如果要选取第1层楼的最后一列的所有房间使用如下代码b[0,:,-1]
array([3, 7, 11])
如果要反向选取第1层楼的最后一列的所有房间使用如下代码b[0,::-1,-1]
array([11, 7, 3])
在该数组切片中间隔地选定元素b[0,::2,-1]
array([3, 11])
如果在多维数组中执行翻转一维数组的命令将在最前面的维度上翻转元素的顺序在我们
的例子中将把第1层楼和第2层楼的房间交换b[::-1]
array([[[12,13, 14, 15],
[16, 17, 18, 19],
[20, 21, 22, 23]],
[[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]]])
刚才做了些什么
我们用各种方法对一个NumPy多维数组进行了切片操作。