如何引用numpy数组的切片/视图

时间:2016-12-14 08:12:11

标签: python arrays numpy slice

我给出的答案earlier为我提出了一个问题:是否可以引用一个numpy数组的视图或切片而不重复一堆括号?

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

但是如果我将该数组分配给变量b=a[s][mask]并更改ba不会改变,所以我最终在计算中携带了一堆括号。我尝试了uv=u.view()[s]的各种安排,但似乎.view()只能查看整个数组。我还缺少另一种方法吗?

1 个答案:

答案 0 :(得分:1)

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

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

也就是说,您可以将掩码简化为单个变量,但是您可能无法完全摆脱它,除非您希望使用__getitem__和{{1}编写自己的包装类}。