python - 将不同大小的numpy数组组合成一个更大的矩阵

标签 python arrays numpy array-broadcasting

我想将所有可能的不同大小的 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

但是获取操作数不能和形状一起广播。

(编辑)需要一个可以具有可变长度数组的动态数量的解决方案。不一定用于三个阵列。

最佳答案

我认为您正在寻找 meshgrid,它现在适用于 任何 数量的数组,只需将它们添加到参数即可:

np.array(np.meshgrid(a,b,c)).T.reshape(-1,3)

如果你有一个数组列表:

l = [a,b,c]
np.array(np.meshgrid(*l)).T.reshape(-1,len(l))

输出:

array([[ 1,  6,  9],
       [ 1,  7,  9],
       [ 1,  8,  9],
       [ 2,  6,  9],
       [ 2,  7,  9],
       [ 2,  8,  9],
       [ 3,  6,  9],
       [ 3,  7,  9],
       [ 3,  8,  9],
       [ 4,  6,  9],
       [ 4,  7,  9],
       [ 4,  8,  9],
       [ 5,  6,  9],
       [ 5,  7,  9],
       [ 5,  8,  9],
       [ 1,  6, 10],
       [ 1,  7, 10],
       [ 1,  8, 10],
       [ 2,  6, 10],
       [ 2,  7, 10],
       [ 2,  8, 10],
       [ 3,  6, 10],
       [ 3,  7, 10],
       [ 3,  8, 10],
       [ 4,  6, 10],
       [ 4,  7, 10],
       [ 4,  8, 10],
       [ 5,  6, 10],
       [ 5,  7, 10],
       [ 5,  8, 10],
       [ 1,  6,  3],
       [ 1,  7,  3],
       [ 1,  8,  3],
       [ 2,  6,  3],
       [ 2,  7,  3],
       [ 2,  8,  3],
       [ 3,  6,  3],
       [ 3,  7,  3],
       [ 3,  8,  3],
       [ 4,  6,  3],
       [ 4,  7,  3],
       [ 4,  8,  3],
       [ 5,  6,  3],
       [ 5,  7,  3],
       [ 5,  8,  3],
       [ 1,  6,  4],
       [ 1,  7,  4],
       [ 1,  8,  4],
       [ 2,  6,  4],
       [ 2,  7,  4],
       [ 2,  8,  4],
       [ 3,  6,  4],
       [ 3,  7,  4],
       [ 3,  8,  4],
       [ 4,  6,  4],
       [ 4,  7,  4],
       [ 4,  8,  4],
       [ 5,  6,  4],
       [ 5,  7,  4],
       [ 5,  8,  4],
       [ 1,  6,  5],
       [ 1,  7,  5],
       [ 1,  8,  5],
       [ 2,  6,  5],
       [ 2,  7,  5],
       [ 2,  8,  5],
       [ 3,  6,  5],
       [ 3,  7,  5],
       [ 3,  8,  5],
       [ 4,  6,  5],
       [ 4,  7,  5],
       [ 4,  8,  5],
       [ 5,  6,  5],
       [ 5,  7,  5],
       [ 5,  8,  5]])

关于python - 将不同大小的numpy数组组合成一个更大的矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66562572/

相关文章:

java - 如何在水平表格中垂直打印

arrays - 逻辑数组 - 在赋值 A(I) = B 中,B 和 I 中的元素数必须相同

python-3.x - ValueError : Expected 2D array, 得到的是一维数组。 Python 线性回归函数

python - NumPy ND 数组中出现频率最高的元素

python - 在多次跳转或列中将 numpy 数组转换为 pandas

python - "None"在我运行我的程序时不断出现

python - 简化列表理解

python - SimpleConnectionPool 与 ThreadedConnectionPool : what it means to be thread safe?

python - 如何使用 Expando 查询事先未知的多个属性?

java - 写入 `double...` 而不是 `[] double`