gpt4 book ai didi

python - 如何有效地操作一个大的numpy数组

转载 作者:太空宇宙 更新时间:2023-11-04 08:30:56 24 4
gpt4 key购买 nike

我有一段代码是基于一个大的numpy数组然后操作另一个数组。因为这是一个非常大的数组,你能告诉我是否有一种有效的方法来实现我的目标吗? (我认为高效的方式应该是直接操作数组而不是通过for循环)。

提前致谢,请在下面找到我的代码:

N = 1000000000
rand = np.random.rand(N)
beta = np.zeros(N)
for i in range(0, N):
if rand[i] < 0.5:
beta[i] = 2.0*rand[i]
else:
beta[i] = 1.0/(2.0*(1.0-rand[i]))

最佳答案

你在这里基本上失去了 numpy 的效率,通过在 Python 中执行处理。 numpy 的想法是批量 处理项目,因为它在幕后使用 C++ 中的效率算法进行实际处理。您可以将 numpy 的 Python 端更多地视为“接口(interface)”。

现在回答你的问题,我们基本上可以先构造一个 0 到 2 之间的随机数数组,方法是将它与 2 相乘:

rand = 2.0 * np.random.rand(N)

接下来我们可以使用np.where(..) [numpy-doc]它就像一个条件选择器:我们在这里传递三个“数组”:第一个是编码“条件”真实性的 bool 数组,第二个是要填充的值数组,以防相关条件是true,第三个值是在条件为 false 时插入的值数组,因此我们可以这样写:

N = 1000000000
rand = 2 * np.random.rand(N)
beta = np.where(rand < 1.0, rand, 1.0 / (2.0 - rand))

关于python - 如何有效地操作一个大的numpy数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53016316/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com