连接两个NumPy数组得到“ValueError:所有输入数组的维数必须相同”

2024-10-02 02:25:50 发布

您现在位置:Python中文网/ 问答频道 /正文

页眉 输出:

array(['Subject_ID', 'tube_label', 'sample_#', 'Relabel', 
      'sample_ID','cortisol_value', 'Group'], dtype='<U14')

身体 输出:

^{pr2}$
ValueError                                Traceback (most recent call last) <ipython-input-302-efb002602b4b> in <module>()
      1 # Merge names and the rest of the data in np array
      2 
----> 3 testing = np.concatenate((header, body), axis=0)

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

有人能解决这个问题吗? 我尝试了不同的命令来合并这两个(包括堆栈),但得到了相同的错误。尺寸(列)似乎是一样的。在


Tags: ofthesampleinidinputnparray
3条回答

看看纽比.vstack以及中的轴参数np.追加. 这里看起来你想要vstack(也就是说,输出数组有3列,每个列的行数相同)。你也可以调查numpy.重塑,以更改输入数组的形状,以便可以将它们串联起来。在

您需要首先对齐阵列维度。您当前正在尝试组合一维和二维数组。对齐后,可以使用^{}。在

注意np.array([A]).shape返回(1, 7),而{}返回{}。一个更有效的选择是使用A[None, :]。在

另请注意,您的数组将变为dtype object,因为这将接受任意/混合类型。在

A = np.array(['Subject_ID', 'tube_label', 'sample_#', 'Relabel', 
              'sample_ID','cortisol_value', 'Group'], dtype='<U14')

B = np.array([['STM002', '170714_STM002_1', 1, 1, 1, 1.98, 'HC'],
              ['STM002', '170714_STM002_2', 2, 2, 2, 2.44, 'HC'],], dtype=object)

res = np.vstack((np.array([A]), B))

print(res)

array([['Subject_ID', 'tube_label', 'sample_#', 'Relabel', 'sample_ID',
        'cortisol_value', 'Group'],
       ['STM002', '170714_STM002_1', 1, 1, 1, 1.98, 'HC'],
       ['STM002', '170714_STM002_2', 2, 2, 2, 2.44, 'HC']], dtype=object)

{2D}你要先在数组中使用。下面是一个简单的例子:

In [1]: import numpy as np

In [2]: arr1 = np.array(['Subject_ID', 'tube_label', 'sample_#', 'Relabel', 
   ...:       'sample_ID','cortisol_value', 'Group'], dtype='<U14')
   ...:       

In [3]: arr2 = np.array([['STM002', '170714_STM002_1', 1, 1, 1, 1.98, 'HC'],
   ...:        ['STM002', '170714_STM002_2', 2, 2, 2, 2.44, 'HC'],], dtype=object)
   ...:        

In [4]: arr1.shape
Out[4]: (7,)

In [5]: arr2.shape
Out[5]: (2, 7)

In [8]: concatenated = np.concatenate((arr1[None, :], arr2), axis=0)

In [9]: concatenated.shape
Out[9]: (3, 7)

得到的级联数组如下所示:

^{pr2}$

说明:

得到ValueError的原因是其中一个数组是1D,而另一个是2D数组,但是,numpy.concatenate在这种情况下要求数组具有相同的维数。这就是为什么我们使用None提升了arr1的数组维数。但是,也可以用^{}代替{}

相关问题 更多 >

    热门问题