使用numpy将标量添加到for循环内部和外部的向量之间有区别吗?

2024-03-29 12:17:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图利用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: inimportnumpy利用forlen属性规则
1条回答
网友
1楼 · 发布于 2024-03-29 12:17:14

在第二个选项中,您需要执行以下操作:

B=B+k

如您所见,您不需要for循环,它比在“vector”(numpy数组)上循环快得多。你知道吗

它是某种形式的“矢量化”计算,而不是迭代计算,在复杂性和可读性方面更好。两者将产生相同的结果。你知道吗

你可以看到很多关于矢量化和迭代的例子,包括运行时,here。你知道吗

你可以看到 Andrew Ng > EEM >< NUMPY广播属性的<强>great video。你知道吗

相关问题 更多 >