我有一个2D bool数组,形状为row*col,有没有什么有效的方法来水平地对数组执行AND
操作?比如说,
k = np.array([[True, True, False],
[True, False, False],
[True, True, True]])
预计结果将是
np.array([False, False, True])
row和col都非常大,每500万次操作需要12秒以上的时间来执行for
。每个任务有数千个500万个操作,这需要非常长的时间。
2条答案
按热度按时间d4so4syb1#
通过将
np.logical_and
应用于轴1
(列)来减少k
的维数:smdnsysy2#
有一些关于
np.logical_and.reduce
与all
的讨论。从我的测试来看,np.logical_and.reduce
通常比all
快(但快不了多少),尽管它们在大型数组中几乎相同。定时使用timeit
定义:
在创建定义后的交互式控制台中:
在脚本中:
使用perfplot计时
在这里,我再次使用形状
(N,M)
进行测试。我有N=10
和各种M
。