我试图按顺序将numpy数组的每个元素添加到另一个numpy 1D数组中,但不作为逐元素操作。
更具体地,定义func
:
import numpy as np
array1 = np.array([1,2,3,4])
array2 = np.array([10,20,30])
def func(array1,array2):
#what goes here?
return output_array
output_array = func(array1,array2)
因此,以下代码将输出一个包含三个数组的多维数组:
output_array = np.array([[11,12,13,14],[21,22,23,24],[31,32,33,34]])
我使用以下代码使其成功运行:
def func(array1,array2):
return np.array(list(map(lambda x: x + array1,array2)))
然而,似乎应该有一种更好的方法来实现这个功能,并且将其推广到n维也是非常有用的。我尝试过使用np.vectorize()
:
def func(array1,array2):
np_function = np.vectorize(lambda x: x + array1)
return np_function(array2)
但是这种方法行不通,因为它试图将迭代器中的序列分配给单个数组元素(错误信息“使用序列设置数组元素”)。
def outer_add(*arrays): return reduce(np.add.outer, arrays)
- Daniel Fnp.add.outer
也可以很好地处理 n 维数组,不是吗?如果在投票时存在疑虑,你总是可以通过标记来引起投票者的注意。 - Divakarnp.add.outer
也适用于nd输入。 - Daniel Ffunc
是尝试创建一个递归函数。但很难确定。 - Daniel F