问题描述
我想使用numpy基于另外两个数组构建数组,非常感谢您的帮助。
import numpy as np
array1 = np.arange(1,5 + 1,1)
array2 = np.arange(1,2 + 1,1)
print('array1 ==>',array1)
print('array2 ==>',array2)
输出:
array1 ==> [1 2 3 4 5]
array2 ==> [1 2]
output_array ==> [ 1.1 1.2 2.1 2.2 3.1 3.2 4.1 4.2]
解决方法
以下是列表理解功能,可以完成任务:
array1 = [1,2,3,4,5]
array2 = [1,2]
output_array = [i + 0.1*j for i in array1 for j in array2]
print(output_array)
# prints [1.1,1.2,2.1,2.2,3.1,3.2,4.1,4.2,5.1,5.2]
也许有一些聪明的广播魔术,可以让您以非常有效的方式进行numpy呼叫,但这是一个非常简单的方法:
array1 = [1,2]
output_array = np.repeat(array1,2) + np.tile(array2,5)*0.1
print(output_array)
# prints [1.1,5.2]
我个人更喜欢列表理解方法,它更干净,而且速度可能更快
edit:根据他人的评论,这是一种很好的广播方式:
output_array = (array1[:,None] + array2 / 10).ravel()