我一直困扰着切片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.
提前谢谢!
答案 0 :(得分:1)
由于数组必须是“超矩形”,因此无法提供所需的确切输出,因此X[0].shape
必须与X[1].shape
相同。
您可以做的是:
a[[0,1,1],[0,1,2]]
# array([[ 1, 2],
# [ 9, 10],
# [11, 12]])
答案 1 :(得分:1)
您可以这样做,例如:
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]]]
答案 2 :(得分:1)
您可以分别应用两个操作,然后将它们合并:
np.array((a[0,0:1].tolist(), a[1,1:].tolist()))
# array([[[1, 2]], [[9, 10], [11, 12]]], dtype=object)