element wise结合numpy数组列表

时间:2017-11-29 23:09:03

标签: python numpy

我正在尝试对numpy数组进行线性组合。

我有三个numpy数组列表:

a = [np.random.normal(0,1, [1,2]), np.random.normal(0,1, [3,4]), np.random.normal(0,1, [10,11])] b = [np.random.normal(0,1, [1,2]), np.random.normal(0,1, [3,4]), np.random.normal(0,1, [10,11])] c = [np.random.normal(0,1, [1,2]), np.random.normal(0,1, [3,4]), np.random.normal(0,1, [10,11])]

我想基于相应元素的a值,以元素方式组合列表bc中每个数组中的每个元素,以获得新列表d :说d_i = a_i * c_i + (1-c_i) *b_i(线性组合)。

我想在a中选择每个数组中的每个元素,并在bc中找到相应的元素然后合并。但是,我发现这很麻烦,效率低,而且有点愚蠢。有谁能建议更好的方法?

1 个答案:

答案 0 :(得分:1)

假设您的所有列表长度相同,那么我认为没有比

更有效的方法了。
d = [a[i] * c[i] + (1-c[i]) * b[i] for i in range(len(a))]

现在,如果您需要做的只是在列表d上运行一次,那么也许您可以通过生成器理解加快速度?

d = (a[i] * c[i] + (1-c[i]) * b[i] for i in range(len(a)))

但是在一天结束时,没有办法在不到线性的时间内创建元素的线性组合。