IDL#运算符的Python numpy等价物是什么?

时间:2014-04-17 08:59:17

标签: python arrays numpy matrix-multiplication idl-programming-language

我正在寻找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

2 个答案:

答案 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