gpt4 book ai didi

python - Numpy:在具体示例中摆脱循环

转载 作者:行者123 更新时间:2023-12-04 15:28:00 25 4
gpt4 key购买 nike

我是 Numpy 的新手,已经阅读了一些有关它的内容。它反复说,你应该在使用 Numpy 时摆脱循环,否则你会有一些 Python 开销,这会减慢你的代码。因此,为了练习,我尝试以“numpythonic”方式实现一个简单的算法,但我无法摆脱 for 循环。有没有办法改进这个解决方案?

我的主要问题是,我遇到了某种“累积条件”情况,我不知道如何在没有循环的情况下解决这个问题。

import numpy as np

def process(data):
r = np.zeros(3)
for d in data:
ru = r / np.linalg.norm(r)
r = np.where(
np.dot(ru, d) < 0.0,
r + np.negative(d),
r + d
)
return r

data = [
[0.99558784, 0.03476669, -0.08715574],
[0.99194152, 0.1217951, -0.0348995],
[0.9864998, 0.08630755, -0.1391731]
]

print(process(data))
# Out: [ 2.97402916 0.24286934 -0.26122834]

(除了我的主要问题,我当然愿意接受一般批评或改进建议)

最佳答案

一些评论:

  1. 在第一个循环中,您的 ru = ... 语句产生警告 - 它除以 0。
  2. 在这种情况下,np.dot() 返回单个 float ,而不是数组。因此,没有必要使用 np.where(); if 语句会更快。
  3. 对于您提供的数据,您的函数等同于np.sum(data, axis=0)

关于python - Numpy:在具体示例中摆脱循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61871790/

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