给定一个numpy的
ndarray
和一个索引:a = np.random.randint(0,4,(2,3,4))
idx = (1,1,1)
有没有一种简洁的方法来检索 a
中在 idx
处的 0D 子数组?
类似于以下内容:
a[idx + (None,)].squeeze()
但更加专业?
请注意@filippo的巧妙之处。
a[idx][...]
is not equivalent. 首先,它不能用于对象数组。但更严重的是它不会返回子数组,而是一个新数组:
b = a[idx][...]
b[()] = 7
a[idx] == 7
# False
a[idx+(Ellipsis,)]
似乎可以工作。它将两个想法融合在一起。对于对象数组,a[idx]
返回一个int
。对于int
数组,它返回np.int32
。这已经是一个接近 0d 数组的近亲了。看看它的方法和属性。 - hpaulj