我有两个numpy数组,希望在不使用任何for循环的情况下使用以下规则合并它们
例如,假设我有两个数组和n=2, m=3
x = np.random.randint(10, size=(10, 6))
y = np.random.randint(20, size=(12, 6))
[[5 0 2 2 6 1]
[4 8 9 2 7 2]
[5 5 0 5 3 0]
[2 1 4 7 9 4]
[8 1 1 9 2 8]
[4 1 1 0 1 1]
[2 9 3 5 7 9]
[3 6 6 6 0 4]
[4 4 7 3 7 9]
[7 3 7 1 5 2]]
[[ 3 15 3 8 12 12]
[19 12 13 0 19 16]
[11 2 18 16 9 19]
[19 15 15 11 13 2]
[19 14 1 6 13 17]
[19 14 19 14 13 3]
[ 0 1 13 0 19 10]
[19 13 19 5 16 13]
[12 4 15 11 12 17]
[ 4 19 17 2 11 12]
[ 9 12 10 9 15 3]
[13 7 2 5 13 10]]
所需输出为
[[5 0 2 2 6 1]
[4 8 9 2 7 2]
[ 3 15 3 8 12 12]
[19 12 13 0 19 16]
[11 2 18 16 9 19]
[5 5 0 5 3 0]
[2 1 4 7 9 4]
[19 15 15 11 13 2]
[19 14 1 6 13 17]
[19 14 19 14 13 3]
[8 1 1 9 2 8]
[4 1 1 0 1 1]
[ 0 1 13 0 19 10]
[19 13 19 5 16 13]
[12 4 15 11 12 17]
[2 9 3 5 7 9]
[3 6 6 6 0 4]
[ 4 19 17 2 11 12]
[ 9 12 10 9 15 3]
[13 7 2 5 13 10]
[4 4 7 3 7 9]
[7 3 7 1 5 2]
您可以创建一个输出数组,并按索引将输入放入其中。输出总是
您可以生成如下输出索引:
这将创建开始索引的列向量,并添加
n
或m
步骤来标记输入所在的所有行。然后,您可以直接分配输入:您可以创建一个函数,将数组拆分为连续的片(块)。然后,将两个数组分块并使用
itertools.zip_longest
函数将它们交错。最后,将输出包装在np.vstack
中以获得新数组在示例阵列上测试它:
我们重新塑造x和y的分组n和m
然后我们水平叠加,使n和m形成交替序列
那么,x和y所做的一切,我们都附加了它们
相关问题 更多 >
编程相关推荐