小能豆

ValueError:所有输入数组必须具有相同的维数

py

我遇到了一个问题np.append

n_list_converted我正在尝试使用以下代码复制 20x361 矩阵的最后一列:

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)

那么尺寸是否匹配?错误在哪里?


阅读 13

收藏
2024-11-10

共1个答案

小能豆

问题在于 n_lastn_list_converted 的维度不匹配。n_last 是一个形状为 (20,) 的一维数组,而 n_list_converted 是一个形状为 (20, 361) 的二维数组。在使用 np.append 时,这两个数组需要在相同的维度上进行操作。

要解决此问题,可以将 n_last 转换为一个二维数组,使其形状与 n_list_converted 的列匹配 (20, 1)。你可以使用 np.reshapenp.expand_dimsn_last 转换为二维格式,然后再进行拼接。以下是改进后的代码:

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,效果相同:

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 拼接。

2024-11-10