我有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,然后再追加数据。我怎么能这样做?
感谢。
答案 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意味着每次都重新分配和复制更有效。