gpt4 book ai didi

python - 为什么我们可以为 NumPy 数组的形状传递一个列表?形状不是必须是整数或整数元组吗?

转载 作者:行者123 更新时间:2023-12-05 05:40:34 25 4
gpt4 key购买 nike

我正在阅读数组创建函数的官方 NumPy 文档 np.empty() .该页面声明 empty() 采用形状参数,允许用户指定要创建的数组的形状。参数说明为:

形状:整数或整数元组。
空数组的形状,例如 (2, 3) 或 2。

shape 明确声明为 intint(s) 元组。然而,页面底部是这个示例,其中 shape 似乎是一个 list 整数:

>>> np.empty([2, 2])  # [2, 2] uses square brackets, so this is a list!
array([[ -9.74499359e+001, 6.69583040e-309], # array shape matches the list
[ 2.13182611e-314, 3.06959433e-309]]) # values are uninitialized

在我的机器上运行示例给出了相同的结果; NumPy 似乎允许使用列表来指定数组的形状。所以,我的问题是

  • 这是预期的行为吗(允许将列表用作 NumPy 数组的形状)?
  • 还有其他事情发生吗?例如,列表是否刚刚被转换为元组?

最佳答案

据我所知,元组是 Numpy 形状最初支持的唯一类型,但由于 this related bug 最近才支持列表。 .因此,Numpy 开发人员意识到这一点并明确选择支持任何类型的类整数序列。其实评论在Numpy code明确指出:

it can be an arbitrary sequence of integer like objects, neither of which is safe

因此,列表在代码中受支持,但尚未记录(文档不是最新的)。有趣的事实:range(2, 6) 是关于 Numpy 代码的完全有效的形状。

在内部,所有形状描述符都是元组(参见 the code )。因此,是的,列表和更普遍的类似整数的序列(包括标量整数的特殊情况)被转换为元组

关于python - 为什么我们可以为 NumPy 数组的形状传递一个列表?形状不是必须是整数或整数元组吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72382181/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com