Python Numpy:在一个具体的例子中去掉循环
我是Numpy的新手,已经读了一些关于它的东西。它反复地说,在使用Numpy时应该去掉循环,因为否则会有一些Python开销,这会降低代码的速度。因此,为了练习,我尝试以“numpythonic”的方式实现一个简单的算法,但我无法摆脱for循环。有没有办法改进这个解决方案 我的主要问题是,我有一些“累积条件”的情况,我不知道如何在没有循环的情况下解决这个问题Python Numpy:在一个具体的例子中去掉循环,python,numpy,Python,Numpy,我是Numpy的新手,已经读了一些关于它的东西。它反复地说,在使用Numpy时应该去掉循环,因为否则会有一些Python开销,这会降低代码的速度。因此,为了练习,我尝试以“numpythonic”的方式实现一个简单的算法,但我无法摆脱for循环。有没有办法改进这个解决方案 我的主要问题是,我有一些“累积条件”的情况,我不知道如何在没有循环的情况下解决这个问题 import numpy as np def process(data): r = np.zeros(3) for d
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]
将numpy导入为np
def过程(数据):
r=np.零(3)
对于数据中的d:
ru=r/np.linalg.norm(r)
r=np.where(
np.dot(ru,d)<0.0,
r+np.负(d),
研发
)
返回r
数据=[
[0.99558784, 0.03476669, -0.08715574],
[0.99194152, 0.1217951, -0.0348995],
[0.9864998, 0.08630755, -0.1391731]
]
打印(过程(数据))
#输出:[2.97402916 0.24286934-0.26122834]
(除了我的主要问题之外,我当然愿意接受一般性的批评或改进建议)一些评论:
ru=…
语句生成警告-它除以0np.dot()
返回单个浮点,而不是数组。因此,没有必要使用np.where()
<代码>如果语句会更快np.sum(data,axis=0)