我一直陷入有关切片numpy数组的问题。
下面是我现在有一个数组:
a = np.array([[[ 1, 2],
[ 3, 4],
[ 5, 6]],
[[ 7, 8],
[ 9, 10],
[11, 12]]]
如何使用切片来获取如下的数组?
np.array([[[ 1, 2]],
[[ 9, 10],
[11, 12]]]
我尝试过a[[0,1],[0,[1,2]]
,但是它没有用并给出错误: ValueError: setting an array element with a sequence.
预先感谢您!
由于不可能输出所需的确切功能,因为数组必须是"超矩形",因此X[0].shape
必须与X[1].shape
相同。
您能做的是:
a[[0,1,1],[0,1,2]]
# array([[ 1, 2],
# [ 9, 10],
# [11, 12]])
您可以做到这一点,例如:
import numpy as np
a = np.array([[[ 1, 2], [ 3, 4], [ 5, 6]], [[ 7, 8], [ 9, 10], [11, 12]]])
print(np.array([[a[0, 0 ,: ], a[1, 1 ,:], a[1, 2 ,: ]]]))
结果:
[[[ 1 2]
[ 9 10]
[11 12]]]
您可以分开应用两个操作,然后将它们合并:
np.array((a[0,0:1].tolist(), a[1,1:].tolist()))
# array([[[1, 2]], [[9, 10], [11, 12]]], dtype=object)