如何引用 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]
并改变b
,a
不会改变,所以我最终通过我的计算携带了一堆括号。我尝试了 uv=u.view()[s]
的各种排列,但似乎 .view()
只能查看整个数组。我还缺少其他方法吗?
您可能无法解决 u[s]
的简单情况,但在 u[s][mask]
等更复杂的情况下,您可以:
t = s[mask]
u[t] # same as u[s][mask]
也就是说,您可以将掩码简化为单个变量,但您可能无法完全摆脱它,除非您可能想用 [=13= 编写自己的包装器 class ] 和 __setitem__
.
我给的回答
例如,在答案中我使用了 s=np.argsort(u)
,然后对 'virtually' 排序的 u[s]
进行了所有计算。我遇到过需要该数组的布尔掩码的情况,给出类似于 u[s][mask]
的东西。对于更大的数据,我可能有一个面具的面具。 . .直到事情开始看起来像史酷比一集的结尾。
但是如果我把那个数组赋值给一个变量b=a[s][mask]
并改变b
,a
不会改变,所以我最终通过我的计算携带了一堆括号。我尝试了 uv=u.view()[s]
的各种排列,但似乎 .view()
只能查看整个数组。我还缺少其他方法吗?
您可能无法解决 u[s]
的简单情况,但在 u[s][mask]
等更复杂的情况下,您可以:
t = s[mask]
u[t] # same as u[s][mask]
也就是说,您可以将掩码简化为单个变量,但您可能无法完全摆脱它,除非您可能想用 [=13= 编写自己的包装器 class ] 和 __setitem__
.