【发布时间】:2021-06-08 06:25:25
【问题描述】:
我想将所有可能的不同大小的 numpy 数组组合成一个更大的矩阵。例如a = np.array([1, 2, 3, 4, 5])、b = np.array([6, 7, 8])、c = np.array([9, 10, 3, 4, 5]),输出应该是:
array([[1., 6., 9.],
[2., 7., 10.],
[3., 8., 3.],
[4., 6., 4.],
[5., 7., 5.],
[1., 8., 10.],
[2., 6., 3.],
[3., 7., 4.],
[4., 8., 5.],
[5., 6., 9.],
.....
[5., 8., 5.])
涵盖所有可能的组合。请注意,数组 b 值正在重复。我尝试过制作数组,然后使用广播原理。
arr= np.ones((75,3))
arr[:,0]=arr[:,0]*a
arr[:,1]=arr[:,1]*b
arr[:,2]=arr[:,2]*c
但是获取操作数不能和形状一起广播。
(编辑)需要一个可以具有动态数量的可变长度数组的解决方案。不一定是三个数组。
【问题讨论】:
-
总是三个数组吗?我还认为您的意思是在输出行中包含三个数组的元素的每种组合,这与您打印的所需输出不同(为了清楚起见,请考虑三个相同大小的数组)
-
数组的数量是可变的。我提供了三个作为示例。输出应该是可以使用数组元素进行的所有可能组合,即每个数组元素的总数相乘。
-
这能回答你的问题吗? Using numpy to build an array of all combinations of two arrays - 对于 >2 个数组有很多答案。
-
这个答案涵盖了更一般的情况。
标签: python arrays numpy array-broadcasting