1 回答
TA贡献1780条经验 获得超4个赞
对于此类问题,文档可能非常有用。在这里查看它们:
numpy.append
numpy.concatenate
使用这些你会发现:
In [2]: np_2d = np.array([[1.73, 1.68, 1.71, 1.89, 1.79], [65.4, 59.2, 63.6, 88.4, 68.7]])
...:
In [2]: np_2d
Out[2]:
array([[ 1.73, 1.68, 1.71, 1.89, 1.79],
[65.4 , 59.2 , 63.6 , 88.4 , 68.7 ]])
注意输入到np.array. 它是一个列表,包含 2 个等长的列表。
In [3]: np_2d_again = np.array([1.1, 2.2, 3.3])
In [4]: np.append(np_2d_again, [4.4, 5.5, 6.6])
Out[4]: array([1.1, 2.2, 3.3, 4.4, 5.5, 6.6])
查看np.append文档。看看关于 raveling 怎么说?它将一个 (3,) 数组连接到另一个数组,结果是 (6,)。
np.append名字很差,经常被误用。它不是列表追加的替代品。一方面,它没有就地运行。
在您的 中np.concatenate(np_2d_again, np.array([4.4, 5.5, 6.6])),您会收到错误,因为它需要一个轴号作为第二个参数。重读文档。您需要提供要加入的数组的列表。 np.append可能误导了。
正确的使用方法concatenate:
In [6]: np.concatenate([np_2d_again, np.array([4.4, 5.5, 6.6])])
Out[6]: array([1.1, 2.2, 3.3, 4.4, 5.5, 6.6])
但由于两个输入都是 (3,),它们只能在 0 轴上连接,形成 (6,) 形状。
np2_2d_again = np.array(np_height, np_weight)有一个类似的问题。第二个参数应该是一个 dtype,而不是另一个数组。你np.array第一次使用正确。
In [7]: np.array([np_2d_again, np.array([4.4, 5.5, 6.6])])
Out[7]:
array([[1.1, 2.2, 3.3],
[4.4, 5.5, 6.6]])
np.array沿新轴连接组件。它处理数组列表的方式与原始列表列表基本相同。
np.stack是一个有用的前端concatenate,其行为类似于np.array(在使用轴时具有更大的灵活性):
In [8]: np.stack([np_2d_again, np.array([4.4, 5.5, 6.6])])
Out[8]:
array([[1.1, 2.2, 3.3],
[4.4, 5.5, 6.6]])
添加回答
举报