python - 向量数组和矩阵数组之间的成对积

标签 python numpy

我有一个二维数组 A,我在这里将其表示为 [v_1, v_2, v_3, ..., v_n]

我有一个 3-d 张量 B,我在这里将其表示为 [m_1, m_2, m_3, ...n m_n]

A.type = numpy.ndarray

A.shape = (300, 4)

B.type = numpy.ndarray

B.shape = (300, 4, 2)

我想要获取一维数组C = A*B,使得C = [u_1, u_2, u_3, ..., u_n],其中 u_i = np.dot(v_i, m_i)

如何在不迭代 1n 并在 A 上使用 numpy.tensordot() 的情况下做到这一点> 和 B

最佳答案

您可以使用np.einsum函数来做到这一点。这将允许您为作为字符串提供的数组的每个维度给出一个字母(索引),并使用爱因斯坦求和符号进行处理。所以在你的情况下我会说:

np.einsum( "ik,ikl->il", A,B )

所以在这种情况下,我将 A 的维度命名为 i,k --> 300,4,B 的维度必须是 i,k 以及其他值,例如l --> 300,4,2 然后用箭头指定要输出的维度。如果您没有在箭头后面的符号中提供字母(索引),则会对该尺寸进行求和。所以如果你做了“ik,ikl->l”,它就会在 300 维上求和。

关于python - 向量数组和矩阵数组之间的成对积,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24568189/

相关文章:

python - 将 pywin32 与 iPython 结合使用

python - 使用 asyncore 读取套接字缓冲区

python - 在python中添加反转的前一个数字来实现回文

numpy - 转置时numpy和 Octave 的fft不同

python - 如何使用python中的tkinter上的保存按钮保存图像

python - 如何使用多维交叉表/数据透视表

python - 如何加快从 adl ://with fsspec+adlfs? 读取 CSV/Parquet 文件

python - 在numpy中找到两个多边形之间的距离

Python:区分行向量和列向量

python - 遍历 NumPy 矩阵列表