【问题标题】:Python Numpy ndarrayPython Numpy ndarray
【发布时间】:2011-05-02 18:49:57
【问题描述】:

我有 3 个代码 sn-ps:

(1)

x = array([[]]) #x.ndim=2
x=append(x,[[1,2]]) #after this, x.ndim=1???????????????????
x=append(x,[[3,4]],axis=0) #error b/c dimension

(2)
    x = array([[]]) #x.ndim=2
    x=append(x,[[1,2]],axis=0) #error b/c dimension?????????????????

(3)
    x=append([[1,2]],[[3,4]],axis=0) #Good

(???????????) 是我不明白的部分。你能解释一下吗?

我更喜欢 (2),它首先声明一个 2 个轴的 numpy.ndarray,然后再附加数据。我该怎么做?

谢谢。

【问题讨论】:

    标签: arrays numpy


    【解决方案1】:

    来自附加文档:

    定义:append(arr, values, axis=None) 文档字符串: 将值附加到数组的末尾。 参数 ---------- arr:array_like 值将附加到此数组的副本中。 值:array_like 这些值被附加到 `arr` 的副本中。它必须属于 正确的形状(与`arr`相同的形状,不包括`axis`)。如果`轴` 未指定,`values` 可以是任何形状并且会被展平 使用前。 轴:int,可选 附加“值”的轴。如果 `axis` 没有给出, `arr` 和 `values` 在使用前都会被展平。

    也就是说,您的示例 (1) 失败的原因是因为您没有为第一个追加指定轴参数,x 被展平,因此第二个追加失败,因为形状不再匹配。

    您的第二个示例失败,因为形状不匹配。一开始,x.shape = (1,0),即 1 行 0 列。然后您尝试沿第 0 轴添加形状为 (1,2) 的数组(即,您希望结果数组具有更多行但列数相同),这当然不起作用,因为数字的列不匹配。

    顺便说一句,我个人在使用 numpy 时几乎从不使用 append()。预先分配正确的大小然后使用切片来填充它比使用 append 更有效,这意味着每次都重新分配和复制。

    【讨论】:

      猜你喜欢
      • 2018-10-10
      • 2023-03-29
      • 2014-04-22
      • 2016-09-23
      • 2011-11-25
      • 2014-03-14
      • 2022-09-30
      • 2021-07-24
      • 1970-01-01
      相关资源
      最近更新 更多