如何解决不同维度矩阵的串联
我在输出中进行了矩阵的连接,如下所示。
但它不是很有效,因为我的代码是特定于这两个矩阵的。有没有可能让它更高效,这样我就不必一直重写代码中的矩阵,而是让它自动工作?
我自动的意思是我不必在代码中编写我使用的矩阵,但它会自动通过
我想把它放在一个循环中,其中包含将要经过的矩阵的不同变体
import numpy as np
arr1=np.array([[11,21,31],[12,22,32],[13,23,[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.,[22.,[23.,[24.,[31.,[32.,[34.,4.]])
解决方法
另一种选择:
In [246]: arr1
Out[246]:
array([[11,21,31],[12,22,32],[13,23,[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],[4,4,4]])
In [249]: arr1.ravel(order='F') # the transpose ravel
Out[249]: array([11,12,13,14,31,32,34])
In [250]: arr3.ravel(order='F')
Out[250]: array([1,4])
以及分配给预定义数组的替代方法:
In [252]: np.stack((Out[249],Out[250]),axis=1)
Out[252]:
array([[11,4],[21,[22,[23,[24,[31,[32,[34,4]])
这不一定更快、更直接或更通用。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。