假设我有一个三维的numpy数组:
np.random.seed(1145)
A = np.random.random((5,5,5))
我有两个索引列表,分别对应第2和第3个维度:
second = [1,2]
third = [3,4]
我想选择与numpy数组中的元素相对应的元素
A[:][second][third]
因此,切片数组的形状将为
(5,2,2)
。A[:][second][third].flatten()
将会等同于:
In [226]:
for i in range(5):
for j in second:
for k in third:
print A[i][j][k]
0.556091074129
0.622016249651
0.622530505868
0.914954716368
0.729005532319
0.253214472335
0.892869371179
0.98279375528
0.814240066639
0.986060321906
0.829987410941
0.776715489939
0.404772469431
0.204696635072
0.190891168574
0.869554447412
0.364076117846
0.04760811817
0.440210532601
0.981601369658
有没有一种方法可以按这种方式切割numpy数组?到目前为止,当我尝试使用
A [:] [second] [third]
时,我会得到IndexError:index 3 is out of bounds for axis 0 with size 2
的错误,因为第一个维度的[:]
似乎被忽略了。
A[1][2][3]
和A[1. 2, 3]
之间是否有性能差异?谢谢。 - Darren Christopher