Python Numpy ndarray

时间:2010-10-30 11:04:00

标签: arrays numpy

我有3个代码段:

(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,然后再追加数据。我怎么能这样做?

感谢。

1 个答案:

答案 0 :(得分:1)

来自追加文件:

Definition:     append(arr, values, axis=None)
Docstring:
    Append values to the end of an array.                                                                      

    Parameters
    ----------
    arr : array_like
        Values are appended to a copy of this array.
    values : array_like
        These values are appended to a copy of `arr`.  It must be of the
        correct shape (the same shape as `arr`, excluding `axis`).  If `axis`
        is not specified, `values` can be any shape and will be flattened
        before use.
    axis : int, optional
        The axis along which `values` are appended.  If `axis` is not given,
        both `arr` and `values` are flattened before use.

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

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

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