我正在寻找IDL#运算符的Python numpy
等价物。
以下是# operator的作用:
通过乘以第一个数组的列来计算数组元素 通过第二个数组的行。第二个数组必须相同 第一个数组有行的列数。结果数组有 与第一个数组相同的列数和相同的数量 行作为第二个数组。
以下是我正在处理的numpy
数组:
A = [[ 0.9826128 0. 0.18566662]
[ 0. 1. 0. ]
[-0.18566662 0. 0.9826128 ]]
和
B = [[ 1. 0. 0. ]
[ 0.62692564 0.77418869 0.08715574]]
此外,numpy.dot(A,B)
会产生ValueError: matrices are not aligned
。
答案 0 :(得分:1)
阅读关于IDL矩阵乘法定义的注释,似乎它们使用了与其他人相反的符号:
IDL的惯例是将第一个维度视为列 而第二个维度是行
所以#可以通过相当奇怪的外观来实现:
numpy.dot(A.T, B.T).T
来自他们的示例值:
import numpy as np
A = np.array([[0, 1, 2], [3, 4, 5]])
B = np.array([[0, 1], [2, 3], [4, 5]])
C = np.dot(A.T, B.T).T
print(C)
给出
[[ 3 4 5]
[ 9 14 19]
[15 24 33]]
答案 1 :(得分:0)
如果我说得对,你想要matrix multiplication。