【问题标题】:Why there are two square brackets required inside numpy array?为什么 numpy 数组中需要两个方括号?
【发布时间】:2018-03-13 23:53:44
【问题描述】:

我正在学习 python,最近遇到了一个模块 Numpy。在 Numpy 的帮助下,可以将列表转换为数组并更快地执行操作。 假设我们创建了一个具有以下值的数组:

import numpy as np
np_array=array([1,2,3,4,5])

所以如果我们需要以数组的形式存储一个列表,我们需要一个方括号。现在如果我想创建一个二维数组,为什么要这样定义:

np_array=array([[1,2,3,4,5],[6,7,8,9,10]])

不是这样的:

np_array=array([1,2,3,4,5],[6,7,8,9,10])

如果此问题重复,我深表歉意,但我找不到任何答案。

非常感谢

【问题讨论】:

    标签: python-3.x numpy


    【解决方案1】:

    数组函数有以下形式。

    array(object, dtype=None, copy=True, order=None, subok=False, ndmin=0)
    

    如果你使用

    np_array=array([1,2,3,4,5],[6,7,8,9,10])
    

    函数调用将导致将 [1,2,3,4,5] 传递给 object 并将 [6,7,8,9,10] 传递给 dtype,这没有任何意义。

    【讨论】:

    • 这很有帮助!谢谢你:)
    • 然后有人可能会问 为什么 array 的签名不是 array(*objects, dtype=None, copy=True, order=None, subok=False, ndmin=0),答案是“因为它没有任何意义”并且它会可能违反了几个约定(也可能会使array 的实现复杂化)
    【解决方案2】:

    这实际上与numpy 关系不大。您本质上是在问foo(a, b) 和foo([a, b]) 之间有什么区别。

    arbitrary_function([1, 2, 3, 4, 5], [6, 7, 8, 9, 10]) 将两个列表作为单独的参数传递给arbitrary_function(一个参数是[1, 2, 3, 4, 5],第二个是[6, 7, 8, 9, 10])。

    arbitrary_function([[1, 2, 3, 4, 5], [6, 7, 8, 9, 10]]) 将列表列表 ([[1, 2, 3, 4, 5], [6, 7, 8, 9, 10]]) 传递给 arbitrary_function。

    现在,numpy 创建者可以选择允许
    arbitrary_function([1, 2, 3, 4, 5], [6, 7, 8, 9, 10]),但这样做几乎没有意义。

    【讨论】:

    • 感谢您提供如此详细的答复。这消除了所有疑虑:)
    猜你喜欢
    • 2014-08-09
    • 1970-01-01
    • 2017-01-10
    • 1970-01-01
    • 2022-11-10
    • 2011-08-14
    • 2014-02-10
    • 2017-11-07
    • 2019-10-27
    相关资源
    最近更新 更多