Skip to main content
 首页 » 编程设计

python之将矩阵数组制作成矩阵的三元组数组/Python Pandas

2025年05月04日24Free-Thinker

我在一个数组中有 891 个大小为 7X32 的矩阵。我想得到 891 个大小为 7X32 的矩阵的三元组。

两个矩阵的例子(显然不是那么大):

[[1,1,1,1,1], 
[2,2,2,2,2], 
[3,3,3,3,3]], 
[[2,2,2,2,2], 
[2,2,2,2,2], 
[3,3,3,3,3]] 

我需要它变成:

[[1,1,1,1,1], 
[2,2,2,2,2], 
[3,3,3,3,3]], 
[[1,1,1,1,1], 
[2,2,2,2,2], 
[3,3,3,3,3]], 
[[1,1,1,1,1], 
[2,2,2,2,2], 
[3,3,3,3,3]], 
[[2,2,2,2,2], 
[2,2,2,2,2], 
[3,3,3,3,3]], 
[[2,2,2,2,2], 
[2,2,2,2,2], 
[3,3,3,3,3]], 
[[2,2,2,2,2], 
[2,2,2,2,2], 
[3,3,3,3,3]], 

其中 [] 表示它是一个不同的矩阵。

我用来获取矩阵的代码:

matrices = np.dstack([df.values.astype(int)] * 32) 

来自常规数据框。

我想也许

matrices = np.dstack([[df.values.astype(int)] * 32]*3) 

会工作,但没有。

我这样做是为了尝试将常规问题变成像 cifar 10 数据这样的“图像”。

请您参考如下方法:

使用np.repeat在再扩展一个暗淡/轴之后-

np.repeat(a[None],3,axis=0) 

sample 运行-

In [140]: a 
Out[140]:  
array([[7, 1, 8, 6], 
       [5, 8, 1, 1], 
       [2, 7, 3, 7]]) 
 
In [141]: np.repeat(a[None],3,axis=0) 
Out[141]:  
array([[[7, 1, 8, 6], 
        [5, 8, 1, 1], 
        [2, 7, 3, 7]], 
 
       [[7, 1, 8, 6], 
        [5, 8, 1, 1], 
        [2, 7, 3, 7]], 
 
       [[7, 1, 8, 6], 
        [5, 8, 1, 1], 
        [2, 7, 3, 7]]]) 

我们也可以使用np.broadcast_to -

np.broadcast_to(a[None],(3,) + a.shape) # creates a read-only version 

要制作可写版本,请附加 .copy()。


使用 OP 和@piRSquared 之间的历史以及答案帖子,这是我的风中飞镖 -

a = df.values.astype(int) 
shp = a.shape 
out = np.broadcast_to(a[:,None,:,None], (shp[0], 3, shp[1], 32))