Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python numpy数组连接:";ValueError:所有输入数组的维数必须相同;_Python_Numpy - Fatal编程技术网

Python numpy数组连接:";ValueError:所有输入数组的维数必须相同;

Python numpy数组连接:";ValueError:所有输入数组的维数必须相同;,python,numpy,Python,Numpy,如何连接这些numpy数组 第一个np.数组,形状为(5,4) 第二个np.数组,形状为(5,) 最终结果应该是 [[ 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

如何连接这些
numpy
数组

第一个
np.数组
,形状为
(5,4)

第二个
np.数组
,形状为
(5,)

最终结果应该是

[[  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:所有输入数组必须具有相同的维数


我做错了什么?

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

np.concatenate((a,b[:,None]),axis=1)
或者,我们可以使用处理它的
np.column\u 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]])

你可以这样做

import numpy as np

x = np.random.randint(100, size=(5, 4))
y = [16, 15, 12, 12, 17]

print(x)

val = np.concatenate((x,np.reshape(y,(x.shape[0],1))),axis=1)
print(val)
这将产生:

[[32 37 35 53]
 [64 23 95 76]
 [17 76 11 30]
 [35 42  6 80]
 [61 88  7 56]]

[[32 37 35 53 16]
 [64 23 95 76 15]
 [17 76 11 30 12]
 [35 42  6 80 12]
 [61 88  7 56 17]]

还有
np.c.

>>> a = np.arange(20).reshape(5, 4)
>>> b = np.arange(-1, -6, -1)
>>> a
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11],
       [12, 13, 14, 15],
       [16, 17, 18, 19]])                                                                                                                                   
>>> b                                                                                                                                                       
array([-1, -2, -3, -4, -5])                                                                                                                                 
>>> np.c_[a, b]
array([[ 0,  1,  2,  3, -1],          
       [ 4,  5,  6,  7, -2],                       
       [ 8,  9, 10, 11, -3],                      
       [12, 13, 14, 15, -4],                                
       [16, 17, 18, 19, -5]])

第二个数组的形状应该是怎样的?这里的对象数组有什么奇怪的事情吗?这就是我运行array2.shape时得到的结果。你的数组在某种程度上严重混乱,你需要弄清楚发生了什么。就在这之前,我运行这个
array2=np.array(np.round(data[:,0]/20))
b[:,None]符号很好,但也值得一提的是b.重塑()@PaulPanzer,这值得一个新职位!第二个是因为这个代码< >代码> ARARY2= NP.数组(NP.Stata(data [:,0)/20)< /代码>我用<代码> > ARARY2= NP.数组(NP.圆(数据::,0)/ 20)固定。astype(int)< /代码>你敢解码这个:<代码> NP.R'[1,1,0’,A,-1:-6:-1 ]。:)我想知道
np.c
是否总能代替
np.column\u stack
?@hpaulj在我看来很像,但我对
np.column\u stack
不太熟悉。它基本上是一个2d
串联
,在特殊情况下1d输入,对吗?
[[32 37 35 53]
 [64 23 95 76]
 [17 76 11 30]
 [35 42  6 80]
 [61 88  7 56]]

[[32 37 35 53 16]
 [64 23 95 76 15]
 [17 76 11 30 12]
 [35 42  6 80 12]
 [61 88  7 56 17]]
>>> a = np.arange(20).reshape(5, 4)
>>> b = np.arange(-1, -6, -1)
>>> a
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11],
       [12, 13, 14, 15],
       [16, 17, 18, 19]])                                                                                                                                   
>>> b                                                                                                                                                       
array([-1, -2, -3, -4, -5])                                                                                                                                 
>>> np.c_[a, b]
array([[ 0,  1,  2,  3, -1],          
       [ 4,  5,  6,  7, -2],                       
       [ 8,  9, 10, 11, -3],                      
       [12, 13, 14, 15, -4],                                
       [16, 17, 18, 19, -5]])