【发布时间】:2020-06-21 18:01:27
【问题描述】:
我对 Python 中的以下代码感到困惑:
import numpy as np
from numpy.random import rand, randn
def generate_data (beta, n):
u= np.random.rand(n,1)
y= (u**np.arange(0,4))@beta
return y
np.random.seed(12)
beta = np.array([[10,-140,400,-250]]).T
n = 5
y = generate_data(beta, n)
print(y)
我真的不明白的意思
u**np.arange(0,4),尤其是因为 u 是一个维度为 n 乘以 1 的向量(其中 n 是任意的),而np.arange(0,4) 是一个维度为 1 乘以 4 的向量。尽管如此,这个算法有效。
因此我尝试了以下方法:
import numpy as np
u= np.array([1,2,3,4,5,6]).T
beta = np.array([[10,-140,400,-250]]).T
y = (u ** np.arange(0,4)) @ beta
print (y)
这次n 设置为 6。但是,此算法不起作用,并且有关于尺寸的错误消息。
谁能告诉我神秘的u ** np.arange(0,4)是什么意思?
【问题讨论】:
-
在这种情况下,
**意味着权力。在许多其他语言中,它将是^。 -
@Klaus D. 谢谢。但是我们如何将数组的力量带到数组中呢?为什么第一个算法有效,而第二个无效?
-
当 (n,1) 数组与 (m) 数组一起使用时,结果为 (n,m)。加法、乘法和这种幂都是如此。我建议花一些时间阅读 numpy
quickstart,关注broadcasting。
标签: python python-3.x numpy