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

numpy数组串联:“ ValueError:所有输入数组的维数必须相同”

苏伟志
2023-03-14
问题内容

如何串联这些numpy数组

首先np.array具有形状(5,4)

[[  6487    400 489580      0]
 [  6488    401 492994      0]
 [  6491    408 489247      0]
 [  6491    408 489247      0]
 [  6492    402 499013      0]]

第二np.array个形状(5,)

[  16.   15.   12.  12.  17. ]

最终结果应该是

[[  6487    400    489580    0   16]
 [  6488    401    492994    0   15]
 [  6491    408    489247    0   12]
 [  6491    408    489247    0   12]
 [  6492    402    499013    0   17]]

我试过了np.concatenate([array1, array2]) 但是我得到这个错误

ValueError: all the input arrays must have same number of dimensions

我究竟做错了什么?


问题答案:

要使用np.concatenate,我们需要将第二个数组扩展到2D,然后沿着axis=1-

np.concatenate((a,b[:,None]),axis=1)

或者,我们可以使用np.column_stack它来照顾它-

np.column_stack((a,b))

样品运行-

In [84]: a
Out[84]: 
array([[54, 30, 55, 12],
       [64, 94, 50, 72],
       [67, 31, 56, 43],
       [26, 58, 35, 14],
       [97, 76, 84, 52]])

In [85]: b
Out[85]: array([56, 70, 43, 19, 16])

In [86]: np.concatenate((a,b[:,None]),axis=1)
Out[86]: 
array([[54, 30, 55, 12, 56],
       [64, 94, 50, 72, 70],
       [67, 31, 56, 43, 43],
       [26, 58, 35, 14, 19],
       [97, 76, 84, 52, 16]])

如果b是这样,它的一个1D阵列dtype=object具有的形状(1,),很可能所有的数据都包含在它的唯一元素,我们需要 压扁
在连接前出来。为此,我们也可以使用np.concatenate它。这里是一个示例,目的是为了清楚地说明这一点-

In [118]: a
Out[118]: 
array([[54, 30, 55, 12],
       [64, 94, 50, 72],
       [67, 31, 56, 43],
       [26, 58, 35, 14],
       [97, 76, 84, 52]])

In [119]: b
Out[119]: array([array([30, 41, 76, 13, 69])], dtype=object)

In [120]: b.shape
Out[120]: (1,)

In [121]: np.concatenate((a,np.concatenate(b)[:,None]),axis=1)
Out[121]: 
array([[54, 30, 55, 12, 30],
       [64, 94, 50, 72, 41],
       [67, 31, 56, 43, 76],
       [26, 58, 35, 14, 13],
       [97, 76, 84, 52, 69]])


 类似资料:
  • 问题内容: 我有一个问题。 我正在尝试通过使用以下代码来复制20x361矩阵的最后一列: 但是我得到了错误: ValueError:所有输入数组的维数必须相同 但是,我已经通过检查矩阵尺寸 我得到 (20公升)(20公升,361公升) 所以尺寸匹配?错误在哪里? 问题答案: 如果我从3x4数组开始,然后将3x1数组与轴1连接起来,则会得到3x5数组: 请注意,两个要连接的输入都具有2维。 省略形状

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

  • 问题内容: 我要执行以下操作: 不使用循环。最后,A和B包含相同的信息,但索引不同。 我必须指出,尺寸1,2,3和4可以相同或不同。因此,numpy.reshape()似乎很困难。 问题答案: 请注意:Jaime的答案更好。NumPy正是为此目的而提供的。 在numpy中执行此操作的规范方法是使用的可选置换参数。在您的情况下,从i转到,排列是,例如: 或者使用np.einsum ; 这可能是其预期

  • 问题内容: 我有一个二维数组,即序列数组也是数组。对于每个序列,我想计算自相关,因此对于(5,4)数组,我将获得5个结果或维度为(5,7)的数组。 我知道我可以循环浏览第一个维度,但这很慢,也是我的最后选择。还有另一种方法吗? 谢谢! 编辑: 根据选择的答案以及mtrw的评论,我具有以下功能: 请注意,在我的代码中,length是一个全局变量,因此一定要声明它。我也没有将结果限制为实数,因为我还需

  • 问题内容: 我在创建numpy数组的numpy数组时遇到问题。我将在一个循环中创建它: 所需结果: 实际结果: 可能吗?我不知道数组的最终尺寸,因此无法使用固定尺寸对其进行初始化。 问题答案: 永远不要在循环中追加数组:与基本的Python相比,这是NumPy非常不擅长的一项操作。这是因为您要对每个数据进行完整复制,这将花费您二次时间。 相反,只需将您的数组附加到Python列表中,并在最后进行转

  • 问题内容: 如何在numpy数组上执行“输入”操作?(如果给定的numpy数组中存在元素,则返回True) 对于字符串,列表和字典,该功能直观易懂。 这是将其应用于numpy数组时得到的结果 问题答案: 您可以比较的输入数组,这将跨最后两个轴上每个位置的所有元素与第二个数组中对应位置的元素进行比较。这将产生一个匹配的布尔数组,在该数组中,我们检查最后两个轴上的匹配,最后检查是否匹配,就像这样- 样