gpt4 book ai didi

python - Numpy 二维点操作、索引和迭代。如何优化?

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

我需要从代码中移除这个瓶颈。希望有人能帮助我。

我有以下迭代(从 nn 反距离插值算法中提取):

jinterpol=0
for w, ix in zip(wds, ixs):
wz = np.vdot(w, z[ix])
result[jinterpol] = wz
jinterpol += 1

我试过删除 for 循环:

result = np.dot(wds, z[ixs])

但当然它说 ValueError: objects are not aligned

你能给我一些提示吗?非常感谢。

形状是:

  • wds: (550800, 8)
  • z: (212065,)
  • z[ixs]: (550800, 8)
  • 修复:(550800, 8)

  • len(zip(距离, ixs)): 550800
  • w: (8,)
  • 九:(8,)

最佳答案

您可以使用 np.einsum :

>>> import numpy as np
>>> wds = np.random.rand(550800, 8)
>>> z = np.random.rand(212065)
>>> ixs = np.random.randint(212065, size=(550800, 8))

>>> np.einsum('ij,ij->i', wds, z[ixs])
array([ 1.65069924, 3.26203701, 3.16035664, ..., 1.76963986,
2.09727537, 1.94905991])

>>> np.vdot(wds[0], z[ixs[0]])
1.6506992361953157
>>> np.vdot(wds[1], z[ixs[1]])
3.2620370116548827

关于python - Numpy 二维点操作、索引和迭代。如何优化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24048965/

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