Python 为什么数组乘法是可交换的?
我对python相当陌生,对numpy来说也非常陌生。 我意识到,使用numpy,我可以在所有配置中倍增阵列: 行*列,列*行,列*列,行*行 这是什么意思? 我认为这是矩阵乘法,唯一合法的是行*列, 或列*行,结果为零维或二维。 我对这个手术感到困惑 我以为这是矩阵乘法 除非您使用的是Python 为什么数组乘法是可交换的?,python,numpy,Python,Numpy,我对python相当陌生,对numpy来说也非常陌生。 我意识到,使用numpy,我可以在所有配置中倍增阵列: 行*列,列*行,列*列,行*行 这是什么意思? 我认为这是矩阵乘法,唯一合法的是行*列, 或列*行,结果为零维或二维。 我对这个手术感到困惑 我以为这是矩阵乘法 除非您使用的是矩阵对象或点方法/函数,否则它不是。这是元素相乘,还有一些额外的处理,比如不匹配的维度。如果需要矩阵乘法,请使用 numpy.dot(A, B) 您也可以使用matrix对象而不是ndarrays,但是它们导致
矩阵
对象或点
方法/函数,否则它不是。这是元素相乘,还有一些额外的处理,比如不匹配的维度。如果需要矩阵乘法,请使用
numpy.dot(A, B)
您也可以使用
matrix
对象而不是ndarray
s,但是它们导致的不一致性可能会让您感到厌烦。如果给定一个矩阵,您需要知道哪些操作将返回一个矩阵,哪些操作将始终返回一个数组,a[x][y]
将不起作用,还有更多的小问题将使您陷入困境。Numpy数组是N维网格数据,它们的大多数二进制操作都执行元素级标量操作a*b
产生a[i,j,k]*b[i,j,k]
。如果数组的形状不同,numpy将尝试将较小的数组转换为仍然有意义的内容,然后执行elementwise操作
Numpy矩阵是一个独立的数据结构。它们始终是二维的,并且遵守线性代数中的所有规则。numpy操作通常是元素操作。还请阅读以了解不同维度数组的情况。哦,如果您需要矩阵乘法,请尝试类似于
np.matrix(a)*np.matrix(b)
,或者。