我有x0,它是一个float64(64,64)数组。每当我尝试这样做:
delta = np.random.randn(x0.shape)
它给出了字幕错误。这是如此基本,以至于我全神贯注。我错过了什么?谢谢
完整的回溯如下:
Traceback (most recent call last):
File "<ipython-input-31-dcd2365ed519>", line 1, in <module>
delta = np.random.randn(x0.shape)
File "mtrand.pyx", line 1420, in mtrand.RandomState.randn
File "mtrand.pyx", line 1550, in mtrand.RandomState.standard_normal
File "mtrand.pyx", line 167, in mtrand.cont0_array
TypeError: 'tuple' object cannot be interpreted as an integer
答案 0 :(得分:6)
看起来np.random.randn()
需要一个整数而不是一个元组:
https://docs.scipy.org/doc/numpy/reference/generated/numpy.random.randn.html
尝试np.random.randn(x0.shape[0], x0.shape[1])
答案 1 :(得分:6)
np.random.randn()
需要整数参数,格式为randn(64,64)
。您正在以np.random.randn()
的形式提供randn((64,64))
自变量,这不是预期的。相反,如果您要构建64x64的随机数组,则需要单独传递行数和列数,而不是作为元组传递。
答案 2 :(得分:2)
要调试此功能,建议您在尝试定义增量之前添加以下行:
print(x0)
print(type(x0))
x0是一个元组,但是您试图在np.random.randn函数中使用它,该函数仅接受整数作为参数。如果您需要一个多维的随机数数组(例如3x7x6数组),则可以使用np.random.randn(3, 7, 6)
。