python - 对于 N dim numpy 数组中的每个元素,将其添加到 1D numpy 数组并返回 N+1 dim 数组

标签 python arrays numpy

<分区>

我试图将一个 numpy 数组的每个元素依次添加到另一个 numpy 一维数组,但不是作为逐元素操作。 更具体地说,定义 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)

但这不起作用,因为它试图将序列分配给迭代器内的单个数组元素(错误“使用序列设置数组元素”)。

最佳答案

您不需要特殊函数或任何东西,这是 numpy 的教科书用例 broadcasting功能。您只需要:

output_array = array1[None, :] + array2[:, None]  # or even array1 + array2[:, None]

要理解它,请看一下它们之间的区别

print(array1.shape)          # (4,)
print(array1[:, None].shape) # (4, 1)
print(array1[None, :].shape) # (1, 4)

当您使用 (1, 4) 广播 (4, 1) 时,您会得到 (4, 4)

关于python - 对于 N dim numpy 数组中的每个元素,将其添加到 1D numpy 数组并返回 N+1 dim 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59196426/

相关文章:

python - Python如何从一个函数返回多个值?

python - 使用 Pandas /数据框计算加权平均值

javascript - 使用 jQuery Cookie 在数组中存储和返回值

python - 从[-1,1]创建网格,以将共形贴图应用于图像

python - numpy asarray() 是否引用原始列表

python - 如何将 Traceback 错误信息保存到文件中

Python脚本重复自动启动

Python 的 __int__() 的 Java 对象方法 :

javascript - Javascript 中基本原型(prototype)设计的问题

arrays - 在 PowerShell 中创建 Byte[]