首页 > 解决方案 > 重新排列 2 个不同长度的数组以创建第三个数组 Numpy Python

问题描述

我在下面有 2 个数组,ab合并为result. a乘以a_multiplierb乘以b_multipliera并且b有不同长度的数组,我想将它们组合并相乘并按a*a_multiplier, b*b_multiplier,a*a_multiplier...... 我将如何修改result函数以使预期输出起作用?

import numpy as np 

a_multiplier = 3
b_multiplier = 5

a = np.array([5,32,1,4,3])
b = np.array([1,5,11,3])

result = np.vstack([a * a_multiplier, b * b_multiplier]).flatten("F")

预期输出:

[15  5 96 25  3 55 12 15 9]

值错误:

ValueError: all the input array dimensions for the concatenation axis must match exactly, but along dimension 1, the array at index 0 has size 5 and the array at index 1 has size 4

标签: pythonarraysnumpyvectorformat

解决方案


干得好:

import numpy as np

a_multiplier = 3
b_multiplier = 5

a = np.array([5,32,1,4,3])
b = np.array([1,5,11,3])

result = np.empty((a.size + b.size,), dtype=a.dtype)
result[0::2] = a * a_multiplier
result[1::2] = b * b_multiplier

输出:

array([15,  5, 96, 25,  3, 55, 12, 15,  9])

推荐阅读