如何增加NumPy数组的维数



我得到了以下数组:

a = []
for i in range(5):
a.append(np.array(range(5)))
a = np.array(a)
array([[0, 1, 2, 3, 4],
[0, 1, 2, 3, 4],
[0, 1, 2, 3, 4],
[0, 1, 2, 3, 4],
[0, 1, 2, 3, 4]])

我想为数据添加一个额外的"列",这样它看起来像这样:

array([[0, 1, 2, 3, 4, 5],
[0, 1, 2, 3, 4, 5],
[0, 1, 2, 3, 4, 5],
[0, 1, 2, 3, 4, 5],
[0, 1, 2, 3, 4, 5]])

然而,我能想到的唯一方法如下。难道没有更好的办法吗?

a = np.array([np.insert(i,5,5) for i in a])

给你:

np.hstack([a, np.ones((5,1))*5])

输出:

array([[0., 1., 2., 3., 4., 5.],
[0., 1., 2., 3., 4., 5.],
[0., 1., 2., 3., 4., 5.],
[0., 1., 2., 3., 4., 5.],
[0., 1., 2., 3., 4., 5.]])

另一种可能的方法是使用其他一些NumPy方法,这些方法将来可能对您有用。

import numpy as np
# Creating the initial grid.
X = np.arange(5)
a, yy = np.meshgrid(X, X, sparse=False)
# Create an array of n repeating values; reshape it to (n, 1) dimensions.
newX = np.array([5] * 5).reshape((-1, 1))
# Append that sucker rowwise
np.append(a, newX, axis=1)

最新更新