我给出的答案earlier为我提出了一个问题:是否可以引用一个numpy数组的视图或切片而不重复一堆括号?
例如,在答案中,我使用了s=np.argsort(u)
,然后对“虚拟”排序u[s]
进行了所有计算。我有过这种情况,然后我需要一个该数组的布尔掩码,给出类似于u[s][mask]
的东西。对于更大的数据,我可能有掩码的掩码。 。 。直到事情开始看起来像Scooby Doo剧集的结尾。
但是如果我将该数组分配给变量b=a[s][mask]
并更改b
,a
不会改变,所以我最终在计算中携带了一堆括号。我尝试了uv=u.view()[s]
的各种安排,但似乎.view()
只能查看整个数组。我还缺少另一种方法吗?
答案 0 :(得分:1)
您可能无法解决u[s]
的简单情况,但在更复杂的情况下,例如u[s][mask]
,您可以:
t = s[mask]
u[t] # same as u[s][mask]
也就是说,您可以将掩码简化为单个变量,但是您可能无法完全摆脱它,除非您希望使用__getitem__
和{{1}编写自己的包装类}。