【发布时间】:2020-07-21 18:04:13
【问题描述】:
我正在寻找一种方法来为 numpy 数组的一个条件获取多个结果。
目前,我在同一个 numpy 数组上运行相同的 where 条件两次,以获得两个具有不同输出的新数组。
import numpy as np
np_array = np.random.rand(3,3)
entry_array = np.where(np_array>=0.5,1,0)
mod_array = np.where(np_array>=0.5,np_array,0)
是否有一种可能性,我可以在np_array 上仅使用一个循环来填充两个新数组entries, mod_array。
此外,我也在寻找非数组输出的解决方案,如下所示。
entries = np.where(np_array>=0,1,0).sum()
sum_entries = np.where(np_array>=0,np_array,0).sum()
我对一种高效的方法特别感兴趣,因为我的数组有超过 1 亿个条目。
【问题讨论】:
-
Additionally, I am also looking for a solution for non-array output,你能解释一下什么是非数组输出吗? -
我不知道有什么解决方案可以一步完成这两项操作,但您至少可以通过使用
mask = np_array >= 0.5生成单个布尔掩码然后将其用于布尔值来减少计算时间索引。 -
Q的第二部分:
entries = np.count_nonzero(np.array>=0.5)sum_entries = np.sum(np_array,where=np.array>=0.5) -
@yatu 对于非数组输出,我指的是输出,其中使用条件对数组执行附加操作,并且仅返回单个值。就像第二个代码块中的
sum()。