说我有一个3D阵列,例如:
>>> arr = numpy.arange(36).reshape(3, 4, 3)
>>> arr
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]],
[[24, 25, 26],
[27, 28, 29],
[30, 31, 32],
[33, 34, 35]]])
如何从每个最里面的行中提取第 n 个值?
如果我要获取索引1的值,那么如何提取以下内容?
array([[ 1, 4, 7, 10],
[13, 16, 19, 22],
[25, 28, 31, 34]])
或
array([ 1, 4, 7, 10, 13, 16, 19, 22, 25, 28, 31, 34])
答案 0 :(得分:2)
您可以使用最后一个索引进行访问:
import numpy
arr = numpy.arange(36).reshape(3, 4, 3)
print(arr[:, :, 1])
输出
[[ 1 4 7 10]
[13 16 19 22]
[25 28 31 34]]
或者,
print(arr[:, :, 1].flatten())
输出
[ 1 4 7 10 13 16 19 22 25 28 31 34]
您可以找到有关numpy索引here的更多信息。
更新
正如@MadPhysicist在评论中提到的那样,您可以使用ravel而不是flatten,主要区别是flatten返回副本,而ravel返回视图。您也可以使用arr[..., 1]
访问最后一个索引,称为省略号。从文档中:
省略号扩展为进行选择所需的:个对象 与x.ndim长度相同的元组
进一步
答案 1 :(得分:-1)
要从此类数组中提取元素,您可以执行以下操作:
>>> import numpy as np
>>> arr = np.arange(36).reshape(3, 4, 3)
>>> arr[:,:,1]
array([[ 1, 4, 7, 10],
[13, 16, 19, 22],
[25, 28, 31, 34]])
,如果您想要展平的数组,可以执行以下操作:
>>> arr.flatten()
array([ 1, 4, 7, 10, 13, 16, 19, 22, 25, 28, 31, 34])