我试图利用Python的Broadcasting属性来替换这个片段的for循环:
import numpy as np
B = np.random.randn(10,1)
k = 25
for i in range(len(B)):
B[i][0]= B[i][0] + k
有了这个:
for i in range((lenB)):
B=B+k
我发现我得到了不同的结果。当我尝试跳出循环时,B=B+k给出了与我所期望的B[I][0]=B[I][0]+k相同的结果
为什么会这样?广播在循环中遵循不同的规则吗?你知道吗
Tags:
在第二个选项中,您需要执行以下操作:
如您所见,您不需要
for
循环,它比在“vector”(numpy
数组)上循环快得多。你知道吗它是某种形式的“矢量化”计算,而不是迭代计算,在复杂性和可读性方面更好。两者将产生相同的结果。你知道吗
你可以看到很多关于矢量化和迭代的例子,包括运行时,here。你知道吗
你可以看到 Andrew Ng > EEM >< NUMPY广播属性的<强>great video。你知道吗
相关问题 更多 >
编程相关推荐