微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

不同维度矩阵的串联

如何解决不同维度矩阵的串联

我在输出中进行了矩阵的连接,如下所示。

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

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

我想把它放在一个循环中,其中包含将要经过的矩阵的不同变体

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 举报,一经查实,本站将立刻删除。