当前位置: 首页 > 面试题库 >

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

毕胡非
2023-03-14
问题内容

我有一个问题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:所有输入数组的维数必须相同

但是,我已经通过检查矩阵尺寸

 print(n_last.shape, type(n_last), n_list_converted.shape, type(n_list_converted))

我得到

(20公升)(20公升,361公升)

所以尺寸匹配?错误在哪里?


问题答案:

如果我从3x4数组开始,然后将3x1数组与轴1连接起来,则会得到3x5数组:

In [911]: x = np.arange(12).reshape(3,4)
In [912]: np.concatenate([x,x[:,-1:]], axis=1)
Out[912]: 
array([[ 0,  1,  2,  3,  3],
       [ 4,  5,  6,  7,  7],
       [ 8,  9, 10, 11, 11]])
In [913]: x.shape,x[:,-1:].shape
Out[913]: ((3, 4), (3, 1))

请注意,两个要连接的输入都具有2维。

省略形状:,并且x[:,-1]为(3,)形状-为1d,因此出现错误:

In [914]: np.concatenate([x,x[:,-1]], axis=1)
...
ValueError: all the input arrays must have same number of dimensions

的代码np.append是(在这种情况下,指定了轴)

return concatenate((arr, values), axis=axis)

因此,只需稍稍更改语法即可append。它使用2个参数代替列表。它模仿列表append是语法,但不应与该列表方法混淆。

In [916]: np.append(x, x[:,-1:], axis=1)
Out[916]: 
array([[ 0,  1,  2,  3,  3],
       [ 4,  5,  6,  7,  7],
       [ 8,  9, 10, 11, 11]])

np.hstack首先确保所有输入均为atleast_1d,然后进行串联:

return np.concatenate([np.atleast_1d(a) for a in arrs], 1)

因此,它需要相同的x[:,-1:]输入。本质上是相同的动作。

np.column_stack 在轴1上也进行连接。但是首先它将1d输入通过

array(arr, copy=False, subok=True, ndmin=2).T

这是将(3,)数组转换为(3,1)数组的一般方法。

In [922]: np.array(x[:,-1], copy=False, subok=True, ndmin=2).T
Out[922]: 
array([[ 3],
       [ 7],
       [11]])
In [923]: np.column_stack([x,x[:,-1]])
Out[923]: 
array([[ 0,  1,  2,  3,  3],
       [ 4,  5,  6,  7,  7],
       [ 8,  9, 10, 11, 11]])

所有这些“堆栈”都可以方便使用,但从长远来看,了解尺寸和基础很重要np.concatenate。还知道如何查找类似这样的函数的代码。我经常使用ipython
??魔术。

在时间测试中,np.concatenate速度明显更快-像这样的小数组,额外的函数调用层会产生很大的时差。



 类似资料:
  • 问题内容: 如何串联这些数组? 首先具有形状 第二个形状 最终结果应该是 我试过了 但是我得到这个错误 我究竟做错了什么? 问题答案: 要使用,我们需要将第二个数组扩展到,然后沿着- 或者,我们可以使用它来照顾它- 样品运行- 如果是这样,它的一个阵列具有的形状,很可能所有的数据都包含在它的唯一元素,我们需要 压扁 在连接前出来。为此,我们也可以使用它。这里是一个示例,目的是为了清楚地说明这一点-

  • 标题输出: 车身输出: 有人能解决这个问题吗?我尝试了不同的命令来合并这两个(包括堆栈),我得到了同样的错误。虽然尺寸(列)看起来是一样的。

  • 我写了这段代码。我的输入形状是(100 x100 X3)。我是深度学习的新手。我花了这么多时间在这个问题上,但无法解决这个问题。任何帮助都非常感谢。 错误:在[15]:运行文件('/user/Project/SM/src/ann\u algo\u keras.py',wdir='/user/Project/SM/src')中随机启动突触权重:模型:“sequential\u 3” conv2d_1

  • 在中传递时,我得到以下错误: 回溯(最近一次呼叫最后一次): 文件“C:/Classify/classifier.py”,第95行,在 列车平均值,测试平均值,cms=列车模型(X,y,“ceps”,plot=True) 列车模型中第47行的文件“C:/Classify/classifier.py” clf.fit(X_train,y_train)文件“C:\Python27\lib\site p

  • 定义为一维数组,定义为二维数组,但这一行为是两个夜晚。原因是什么? 以及该代码的输出:

  • 问题内容: 我在Keras的最后一层中使用一些tensorflow函数(reduce_sum和l2_normalize)构建模型,而遇到此问题。我一直在寻找解决方案,但所有解决方案都与“ Keras张量”有关。 这是我的代码: 然后是错误: ValueError:模型的输出张量必须是TensorFlow的输出(因此保留过去的层元数据)。找到:Tensor(“ l2_normalize_3:0”,s