python - numpy 中不同大小数组的乘积

标签 python numpy scientific-computing

我有两个数组,x = np.arange(3) = [0,1,2,3]y = np.arange(4) = [0,1 ,2]

是否有一个 numpy 函数可以给出他们所有产品的表格?或例如有时这将是:

x*y = [[0,0,0,0], [0,1,2,3], [0,2,4,6]]

这不是内积或标量积。这可以称为“张量积”或其他名称。

最佳答案

对于外积,具体有 np.outer:

>>> x = np.arange(3)
>>> y = np.arange(4)
>>> np.outer(x, y)
array([[0, 0, 0, 0],
       [0, 1, 2, 3],
       [0, 2, 4, 6]])
>>> 

更一般地说,您可以通过广播实现这一点:

>>> x = np.arange(3)
>>> y = np.arange(4)
>>> x[..., None] * y[None, ...]
array([[0, 0, 0, 0],
       [0, 1, 2, 3],
       [0, 2, 4, 6]])
>>> 

要在所有对上应用具有两个参数的函数,您可以将其定义为:

def f(x, y):
    return x * y

然后您可以按如下方式使用它:

>>> f(x[..., None], y[None, ...])
array([[0, 0, 0, 0],
       [0, 1, 2, 3],
       [0, 2, 4, 6]])
>>> 

要在外积上应用一个带有一个参数的函数,您可以这样做:

np.exp(np.outer(x, y))

np.exp(x[..., None] * y[None, ...])

关于广播的更多信息:

关于python - numpy 中不同大小数组的乘积,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20501073/

相关文章:

python - 创建 matplotlib 图形后如何释放内存

python - 使用 numpy 数组计算规则网格单元格内的点数

git - DVCS如何帮助科学编程?

python - "Correct"与 numpy 对象交互的方式

python - 用于评估相同长度的1d numpy数组上的1-d函数数组的并行算法

python - 如何将日期时间数据帧列转换为 int64,将值 2018-08-01 替换为 20180801?

python - 将多个 python 字典初始化为相同的键名和值

python - Djangobulk_Create,大型csv文件

python - 获取满足特定形状和步幅约束的 ndarray View

python - python pandas 中的等效 R "findcorrelation(corr,cutoff = 0.75)"