为什么数组乘法是交换的?

2024-05-23 13:58:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我对python比较陌生,对numpy也很陌生。 我意识到使用numpy我可以在所有配置中倍增阵列: 行*列,列*行,列*列,行*行。在

这是什么意思? 我以为这是矩阵乘法,唯一合法的就是行*列, 或列*行,结果为零维或二维。 我对这次行动感到困惑。在


Tags: numpy矩阵意识乘法合法陌生零维
2条回答

多维数组和数组的基本运算都是二进制的。a * b产生{}。如果数组的形状不同,numpy将尝试将较小的数组broadcast转换成仍然有意义的内容,然后执行elementwise操作。在

Numpy矩阵是一个独立的数据结构。它们总是二维的,遵守你在线性代数中学到的所有规则。在

I thought that this is matrix multiplication

除非使用matrix对象或dot方法/函数,否则它不是。这是元素乘法,对于不匹配的维度,有一些称为broadcasting的额外处理。如果你想要矩阵乘法,用

numpy.dot(A, B)

您也可以使用matrix对象来代替ndarrays,但是它们导致的不一致性可能会让人讨厌。你需要知道如果给定一个矩阵,什么操作会返回一个矩阵,什么操作总是返回一个数组,A[x][y]将不起作用,还有更多的小问题会把你搞砸。在

相关问题 更多 >