我遇到了一个问题np.append。
np.append
n_list_converted我正在尝试使用以下代码复制 20x361 矩阵的最后一列:
n_list_converted
n_last = [] n_last = n_list_converted[:, -1] n_lists = np.append(n_list_converted, n_last, axis=1)
但我收到错误:
ValueError: all the input arrays must have same number of dimensions
不过,我已经通过以下方式检查了矩阵维度
print(n_last.shape, type(n_last), n_list_converted.shape, type(n_list_converted))
我得到了
(20L,) (20L, 361L)
那么尺寸是否匹配?错误在哪里?
问题在于 n_last 和 n_list_converted 的维度不匹配。n_last 是一个形状为 (20,) 的一维数组,而 n_list_converted 是一个形状为 (20, 361) 的二维数组。在使用 np.append 时,这两个数组需要在相同的维度上进行操作。
n_last
(20,)
(20, 361)
要解决此问题,可以将 n_last 转换为一个二维数组,使其形状与 n_list_converted 的列匹配 (20, 1)。你可以使用 np.reshape 或 np.expand_dims 将 n_last 转换为二维格式,然后再进行拼接。以下是改进后的代码:
(20, 1)
np.reshape
np.expand_dims
import numpy as np n_last = n_list_converted[:, -1] # 提取最后一列,形状为 (20,) n_last = np.expand_dims(n_last, axis=1) # 将其转化为二维数组,形状为 (20, 1) # 然后进行拼接 n_lists = np.append(n_list_converted, n_last, axis=1) print(n_lists.shape) # 现在的形状应为 (20, 362)
或者也可以使用 reshape,效果相同:
reshape
n_last = n_last.reshape(-1, 1) # 将其重塑为 (20, 1) n_lists = np.append(n_list_converted, n_last, axis=1)
现在,n_last 的形状为 (20, 1),它可以在 axis=1(列方向)上与 n_list_converted 拼接。
axis=1