gpt4 book ai didi

python - 如何有效地乘以 numpy 数组中的相应元素?

转载 作者:太空宇宙 更新时间:2023-11-04 01:07:31 26 4
gpt4 key购买 nike

给定一个形状为 (m,) 的 numpy 数组 x 和一个形状为 (m/n, ),如何有效地将 x 乘以 y 的相应元素?

这是我最好的尝试:

In [13]: x = np.array([1, 5, 3, 2, 9, 1])

In [14]: y = np.array([2, 4, 6])

In [15]: n = 2

In [16]: (y[:, np.newaxis] * x.reshape((-1, n))).flatten()
Out[16]: array([ 2, 10, 12, 8, 54, 6])

最佳答案

我觉得你的解决方案非常好。

如果你想稍微加快速度,你可以:

  • 使用 ravel() 而不是 flatten()(如果可能,前者将返回一个 View ,后者总是返回一个副本)。

  • 在 Fortran 中 reshape x 以避免在 y 上进行另一个索引操作的开销(尽管随后的计时表明这种加速可以忽略不计)

所以重写乘法变成:

>>> (x.reshape((2, -1), order='f') * y).ravel('f')
array([ 2, 10, 12, 8, 54, 6])

时间:

>>> %timeit (y[:, np.newaxis] * x.reshape((-1, n))).flatten()
100000 loops, best of 3: 7.4 µs per loop

>>> %timeit (x.reshape((n, -1), order='f') * y).ravel('f')
100000 loops, best of 3: 4.98 µs per loop

关于python - 如何有效地乘以 numpy 数组中的相应元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29630445/

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