如何引用 numpy 数组的 slice/view

How to reference a slice/view of a numpy array

我给的回答给我提出了一个问题:是否可以在不重复一堆括号的情况下引用numpy数组的视图或切片?

例如,在答案中我使用了 s=np.argsort(u),然后对 'virtually' 排序的 u[s] 进行了所有计算。我遇到过需要该数组的布尔掩码的情况,给出类似于 u[s][mask] 的东西。对于更大的数据,我可能有一个面具的面具。 . .直到事情开始看起来像史酷比一集的结尾。

但是如果我把那个数组赋值给一个变量b=a[s][mask]并改变ba不会改变,所以我最终通过我的计算携带了一堆括号。我尝试了 uv=u.view()[s] 的各种排列,但似乎 .view() 只能查看整个数组。我还缺少其他方法吗?

您可能无法解决 u[s] 的简单情况,但在 u[s][mask] 等更复杂的情况下,您可以:

t = s[mask]
u[t] # same as u[s][mask]

也就是说,您可以将掩码简化为单个变量,但您可能无法完全摆脱它,除非您可能想用 [=13= 编写自己的包装器 class ] 和 __setitem__.