python - 用 Numpy 矩阵乘法数组

标签 python arrays numpy matrix

我有一个 5x5 的数组数组,我正在尝试将一行的转置矩阵乘以另一行。

import numpy as np
a = np.array([1, 4, 6, 4, 1])
b = np.array([-1, -2, 0, 2, 1])
c = np.array([-1, 2, 0, -2, 1])
d = np.array([-1, 0, 2, 0, -1])
e = np.array([1, -4, 6, -4, 1]) 
f = np.vstack([a, b, c, d, e])

result = np.dot(f[1, :].T, f[1, :])

我以为这行得通,但显然

f[1, :].T

最终成为

[-1, -2, 0, 2, 1]

而不是

[[-1]
 [-2]
 [ 0]
 [ 2]
 [ 1]]

因此 np.dot 将其视为真正的点积,而不是进行矩阵乘法。

我发现其中一个索引是整数而所有其他索引是 :s 的列表切片将维度减少一,所以 f[1, :] 不是 (1, 5) 而是 (5,) 因此转置它什么都不做。

我已经能够使用 f[1, :].reshape((1, 5)) 让它工作,但是有更好的方法吗?我是否缺少一种无需 reshape 即可获得转置的简单方法?

最佳答案

您可以使用 np.newaxis 在切片时添加一个维度,以补偿否则丢失的维度。

f[1, :, np.newaxis]

生成您想要的单列二维数组。将 np.newaxis 放在冒号之前会得到一个单行二维数组。

关于python - 用 Numpy 矩阵乘法数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19563539/

相关文章:

python - Python中的快速整数矩阵零空间?

python - gcc 找不到 Python.h

python - 未绑定(bind)本地错误 : local variable 'player' referenced before assignment

javascript - 如何在 JavaScript 中迭代行

python - 二维数组中元素的顺序测试?

python - 如何获取壁橱匹配列表中元素的索引

python - 在 Pandas 中按范围加入/合并的最佳方式

python - 在 python 中更新/附加到 json(嵌套)

javascript - for 循环中的 JS 数组

python - 使用 numpy 广播/矢量化从其他数组构建新数组