发出附加具有不同形状的 ndarray 的问题
Issue appending ndarray's with different shapes
我有一个形状为 (25,2) 的 numpy ndarray
,我想再添加一个形状为 (2,) 的值。
我试过使用 append
方法,但到目前为止没有成功。
有什么想法吗?
谢谢!
要以这种方式追加工作,您需要满足 documentation.
中指定的两个条件
- 附加的对象必须具有相同的尺寸。它的形状应该是
(1, 2)
.
- 您必须指定要连接的轴,否则 numpy 会展平数组。
例如:
import numpy
x = numpy.ones((3, 2))
y = [[1, 2]]
numpy.append(x, y, axis=0)
结果:
array([[ 1., 1.],
[ 1., 1.],
[ 1., 1.],
[ 1., 2.]])
您在 append method
中遇到了什么样的错误? 'no luck' 和 'didnt work' 一样糟糕。在正确的问题中,您应该显示预期值和错误。然而这个话题经常出现,我们可以做出很好的猜测。
In [336]: a = np.ones((3,2),int)
In [337]: b = np.zeros((2,),int)
但首先我会迂腐地尝试 append method
:
In [338]: a.append(b)
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-338-d6231792f85d> in <module>()
----> 1 a.append(b)
AttributeError: 'numpy.ndarray' object has no attribute 'append'
lists
有一个追加方法; numpy 数组没有。
有一个名字不好的 append
函数:
In [339]: np.append(a,b)
Out[339]: array([1, 1, 1, 1, 1, 1, 0, 0])
In [340]: _.reshape(-1,2)
Out[340]:
array([[1, 1],
[1, 1],
[1, 1],
[0, 0]])
在某种程度上是可行的。但是如果我阅读文档,并提供一个轴参数:
In [341]: np.append(a,b, axis=0)
...
-> 5166 return concatenate((arr, values), axis=axis)
ValueError: all the input arrays must have same number of dimensions
现在它只是调用 np.concatenate
,将 2 个参数变成一个列表。
如果这是您遇到的错误并且不理解它,您可能需要查看有关尺寸和形状的基本 numpy 文档。
a
是2d,b
是1d。要连接,我们需要重塑 b
使其成为 (1,2)
,一个与 a
的 (3,2) 兼容的形状。有几种方法可以做到这一点:
In [342]: np.concatenate((a, b.reshape(1,2)), axis=0)
Out[342]:
array([[1, 1],
[1, 1],
[1, 1],
[0, 0]])
远离np.append
;对于许多初学者来说,它太令人困惑了,并且没有为基础添加任何重要内容 concatenate
。
我有一个形状为 (25,2) 的 numpy ndarray
,我想再添加一个形状为 (2,) 的值。
我试过使用 append
方法,但到目前为止没有成功。
有什么想法吗? 谢谢!
要以这种方式追加工作,您需要满足 documentation.
中指定的两个条件- 附加的对象必须具有相同的尺寸。它的形状应该是
(1, 2)
. - 您必须指定要连接的轴,否则 numpy 会展平数组。
例如:
import numpy
x = numpy.ones((3, 2))
y = [[1, 2]]
numpy.append(x, y, axis=0)
结果:
array([[ 1., 1.],
[ 1., 1.],
[ 1., 1.],
[ 1., 2.]])
您在 append method
中遇到了什么样的错误? 'no luck' 和 'didnt work' 一样糟糕。在正确的问题中,您应该显示预期值和错误。然而这个话题经常出现,我们可以做出很好的猜测。
In [336]: a = np.ones((3,2),int)
In [337]: b = np.zeros((2,),int)
但首先我会迂腐地尝试 append method
:
In [338]: a.append(b)
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-338-d6231792f85d> in <module>()
----> 1 a.append(b)
AttributeError: 'numpy.ndarray' object has no attribute 'append'
lists
有一个追加方法; numpy 数组没有。
有一个名字不好的 append
函数:
In [339]: np.append(a,b)
Out[339]: array([1, 1, 1, 1, 1, 1, 0, 0])
In [340]: _.reshape(-1,2)
Out[340]:
array([[1, 1],
[1, 1],
[1, 1],
[0, 0]])
在某种程度上是可行的。但是如果我阅读文档,并提供一个轴参数:
In [341]: np.append(a,b, axis=0)
...
-> 5166 return concatenate((arr, values), axis=axis)
ValueError: all the input arrays must have same number of dimensions
现在它只是调用 np.concatenate
,将 2 个参数变成一个列表。
如果这是您遇到的错误并且不理解它,您可能需要查看有关尺寸和形状的基本 numpy 文档。
a
是2d,b
是1d。要连接,我们需要重塑 b
使其成为 (1,2)
,一个与 a
的 (3,2) 兼容的形状。有几种方法可以做到这一点:
In [342]: np.concatenate((a, b.reshape(1,2)), axis=0)
Out[342]:
array([[1, 1],
[1, 1],
[1, 1],
[0, 0]])
远离np.append
;对于许多初学者来说,它太令人困惑了,并且没有为基础添加任何重要内容 concatenate
。