Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/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
Numpy 不同维数矩阵的级联_Numpy_Loops_Python 3.7_Numpy Ndarray - Fatal编程技术网

Numpy 不同维数矩阵的级联

Numpy 不同维数矩阵的级联,numpy,loops,python-3.7,numpy-ndarray,Numpy,Loops,Python 3.7,Numpy Ndarray,我对矩阵进行了串联,如下输出所示 但这不是很有效,因为我的代码是针对这两个矩阵的。有没有可能使它更高效,这样我就不必一直重写代码中的矩阵,而是让它自动工作 我的意思是,我不必在代码中编写我使用的矩阵,但它会自动传递 我想把它放在一个循环中,循环中的矩阵会有不同的变化 import numpy as np arr1=np.array([[11, 21,31], [12, 22,32], [13, 23,32], [14, 24,34]]) arr2=np.array([1,2,3,4]) a =

我对矩阵进行了串联,如下输出所示

但这不是很有效,因为我的代码是针对这两个矩阵的。有没有可能使它更高效,这样我就不必一直重写代码中的矩阵,而是让它自动工作

我的意思是,我不必在代码中编写我使用的矩阵,但它会自动传递

我想把它放在一个循环中,循环中的矩阵会有不同的变化

import numpy as np
arr1=np.array([[11, 21,31], [12, 22,32], [13, 23,32], [14, 24,34]])
arr2=np.array([1,2,3,4])

a = np.zeros((arr1.flatten().shape[0],2)) #init the new array
a[:,[0]] = arr1.T.flatten()[:,None]  #fill the first column with the values
a[:,[1]] = np.tile(arr2,3)[:,None]  # fill the second column with values
结果

array([[11.,  1.],
       [12.,  2.],
       [13.,  3.],
       [14.,  4.],
       [21.,  1.],
       [22.,  2.],
       [23.,  3.],
       [24.,  4.],
       [31.,  1.],
       [32.,  2.],
       [32.,  3.],
       [34.,  4.]])
另一种选择:

In [246]: arr1
Out[246]: 
array([[11, 21, 31],
       [12, 22, 32],
       [13, 23, 32],
       [14, 24, 34]])
In [247]: arr3=np.repeat(arr2[:,None],3,1)   # a variation on your tile
In [248]: arr3
Out[248]: 
array([[1, 1, 1],
       [2, 2, 2],
       [3, 3, 3],
       [4, 4, 4]])
In [249]: arr1.ravel(order='F')            # the transpose ravel
Out[249]: array([11, 12, 13, 14, 21, 22, 23, 24, 31, 32, 32, 34])
In [250]: arr3.ravel(order='F')
Out[250]: array([1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4])
以及预定义数组赋值的替代方法:

In [252]: np.stack((Out[249],Out[250]), axis=1)
Out[252]: 
array([[11,  1],
       [12,  2],
       [13,  3],
       [14,  4],
       [21,  1],
       [22,  2],
       [23,  3],
       [24,  4],
       [31,  1],
       [32,  2],
       [32,  3],
       [34,  4]])

这不一定更快、更直接或更一般。

你说的自动工作是什么意思?