说我有数组:
>>> import numpy as np
>>> myarr = np.array([[1],[2],[3],[2]])
我想使用逻辑索引来返回myarr
不等于 2 的子数组。
>>> subarr = myarr[myarr != 2]
>>> print subarr
[1 3]
因此,myarr.shape = (4,1)
但是subarr.shape = (2,)
。
为什么在逻辑索引不影响维度 2 的情况下会更改维度 2 的大小?我可以轻松地重塑输出,但是如果我需要在我的代码中经常使用逻辑索引,我不想总是考虑额外的维度(即显然与我正在做的逻辑切片无关的维度)这可能已经改变。
这个 (N,1) --> (K,) 的例子特别麻烦,因为一个东西一个数组的任何逻辑切片也必须是一个东西一个数组。
我觉得必须有一种更简洁的方法来让 NumPy 切片操作不理会琐碎的数组维度。有什么建议么?