numpy中'*'的含义是什么?

时间:2011-12-09 18:32:29

标签: python numpy

>>> shape=(2,2)
>>> np.random.randn(*shape)
array([[-1.64633649, -0.03132273],
   [-0.92331459,  1.05325462]])

我在numpy的文档中找不到它。任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:15)

这不是NumPy特有的语法;它是Python语法。所谓的* - 运算符是Python语法,它在参数列表中对序列进行解包(参见Unpacking Argument Lists)。

您的示例中的用法是将shape元组解压缩到单独的参数中。这是必需的,因为numpy.random.randn将任意数量的整数作为参数,而不是整数元组。

问题中的代码等同于:

>>> np.random.randn(2, 2)

答案 1 :(得分:1)

People other places sometimes call it the 'splat'.(为了完整性,**执行相同的操作,但使用命名/关键字参数)。