类型错误:'tuple'对象不能被解释为整数。

7

我有一个名为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

type(x0.shape) 是什么? - MoxieBall
@MoxieBall:这是一个元组,但我在想为什么。 - srkdb
为什么你在疑惑?难道你的代码不会创建这个对象吗?无论如何,也许你可以使用拆包运算符 *np.random.randn(*x0.shape) - John Coleman
@JohnColeman:它不应该返回一个数组类型吗? - srkdb
欢迎来到StackOverflow。请阅读并遵守帮助文档中的发布指南,这是您创建此帐户时建议的。最小化、完整化、可验证化示例适用于此处。在您发布MCVE代码并准确描述问题之前,我们无法有效地帮助您。我们应该能够将您发布的代码粘贴到文本文件中,并重现您描述的问题。 - Prune
3个回答

9

np.random.randn() 需要整数参数,格式为 randn(64,64)。你输入的参数格式是 randn((64,64)),这不是它期望的。如果你想创建一个 64x64 的随机数组,需要分别传递行和列的数量,而不是作为元组。


7

1
谢谢,这解决了问题,但它应该足够灵活以理解差异,我猜? - srkdb
3
或者 np.random.randn(*x0.shape) - MoxieBall

2
为了调试这个问题,我建议在尝试定义delta之前包含以下代码行:
print(x0)
print(type(x0))

x0是一个元组,但您正在尝试在np.random.randn函数中使用它,该函数仅接受整数作为参数。如果您想要一个多维随机数数组(例如3x7x6数组),您可以使用np.random.randn(3, 7, 6)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接