python - 将 Numpy 数组中的所有行对相乘

标签 python arrays numpy matrix

<分区>

我有一个 MxN Numpy 数组。我想获取数组的每一行并将其按元素乘以数组的每一行,从而得到一个 MxMxN numpy 乘积数组。

le_input = np.array([
    [0, 0, 1],
    [0, 1, 0]
])

le_expected_output = np.array([
    [
        [0, 0, 1],
        [0, 0, 0]
    ],
    [
        [0, 0, 0],
        [0, 1, 0]
    ]
])

我当然可以使用 for 循环来完成这项工作,我已经尝试过了,但我假设在 Numpy 中有一种更快的方法来完成这项工作。有人有什么想法吗?

最佳答案

你可以使用np.einsum:

np.einsum('ik,jk->ijk', le_input, le_input)
# array([[[0, 0, 1],
#         [0, 0, 0]],
#        [[0, 0, 0],
#         [0, 1, 0]]])

或者创建一个新的轴并使用数组的广播属性计算第一个维度上的外积:

le_input[:,None] * le_input
# array([[[0, 0, 1],
#         [0, 0, 0]],
#        [[0, 0, 0],
#         [0, 1, 0]]])

关于python - 将 Numpy 数组中的所有行对相乘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54831241/

相关文章:

python - 试图获得总和,但似乎没有用

php - 插入数组

javascript - 通过给定标签在 javascript 数组中查找值

python - 从列表或元组列表中选择一对随机对象的更有效方法是什么?

python - 使用 boost::process 0.5。无法为 python.exe 重定向 stdio

python - 在 Pandas 中切片时出现值错误

python - tkinter 变量跟踪方法

java - 查找文件中最常出现的字节

python - np.around 用于没有值和整数值的数组

python - 如何舍入 numpy 矢量化函数返回的列表?