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

5 投票
2 回答
1375 浏览
提问于 2025-04-17 08:03
>>> shape=(2,2)
>>> np.random.randn(*shape)
array([[-1.64633649, -0.03132273],
   [-0.92331459,  1.05325462]])

我在numpy的文档里找不到这个。任何帮助都很感激。

2 个回答

2

在其他地方,有些人会把它叫做“星号”(splat)。另外,** 也有类似的功能,不过它是用来处理带名字的参数或者关键字参数的。

17

这不是NumPy特有的语法,而是Python的语法。所谓的*运算符是Python中的一种语法,用于在参数列表中进行序列解包(可以参考解包参数列表)。

在你的例子中,使用这个运算符是为了将shape这个元组拆分成单独的参数。这是因为numpy.random.randn函数需要接受任意数量的整数作为参数,而不是一个整数的元组。

问题中的代码实际上等同于这样做:

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

撰写回答