我有一个形状为(100170256)的NumPy数组。我有一个由索引[0,10,20,40,70]组成的数组
我可以得到索引对应的子数组,如下所示:
sub_array = array[..., index]
这将返回一个具有预期形状(100170,5)的数组。现在,我尝试获取补码并得到与这些索引不对应的子数组。所以,我做到了:
sub_array = array[..., ~index]
出于某种原因,这仍然会返回一个形状数组(1001705)。我想知道如何在python中对这些索引进行这种补充操作
[编辑]
还尝试:
sub_array = array[..., not(index.any)]
但是,这并不能实现我想要的功能(获取形状数组(100170251)
以获取数据的方式,最简单的方法是使用^{} :
或者,您尝试使用的逻辑运算符可以应用于布尔数组,如@DSM所示:
(我不会称你的数组为
array
,但我遵循了你问题中的名称)问题已经得到了回答,但我在这里提出了三种方法的基准
最快的解决方案是布尔掩码(索引数组大小较小且较大)
它比列表理解快2000倍,比
np.delete
稍快要复制的代码
三个建议的解决方案:列表理解(
sol1
)、布尔掩码(sol2
)或np.delete
(sol3
)结果
看看~index给了你什么——我想是:
那么,你的电话
将返回5个条目,对应于索引[-1、-11、-21、-41、-71],即在您的情况下为255、245、235、215和185
类似地,not(index.any)给出
因此,为什么你的第二次尝试不起作用
这应该起作用:
相关问题 更多 >
编程相关推荐