Cha*_*l72 20 python numpy numpy-broadcasting
我在Numpy中理解阵列广播的规则时遇到了一些麻烦.
显然,如果你在两个相同尺寸和形状的数组上执行逐元素乘法,一切都很好.此外,如果您将多维数组乘以标量,它就可以工作.我明白了.
但是如果你有两个不同形状的N维阵列,我不清楚我究竟是什么广播规则.本文档/教程解释说:为了进行广播,操作中两个数组的尾随轴的大小必须相同,或者其中一个必须为1.
好的,所以我假设它是尾随轴,它们指的N是M x N数组.那么,这意味着如果我尝试将两个二维数组(矩阵)乘以相同数量的列,它应该有效吗?除了它没有......
>>> from numpy import *
>>> A = array([[1,2],[3,4]])
>>> B = array([[2,3],[4,6],[6,9],[8,12]])
>>> print(A)
[[1 2]
[3 4]]
>>> print(B)
[[ 2 3]
[ 4 6]
[ 6 9]
[ 8 12]]
>>>
>>> A * B
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: shape mismatch: objects cannot be broadcast to a single shape
Run Code Online (Sandbox Code Playgroud)
由于双方A并B有两列,我还以为这会工作.所以,我可能误解了关于术语"拖尾轴"的一些内容,以及它如何应用于N维数组.
有人可以解释为什么我的例子不起作用,"尾轴"是什么意思?
unk*_*ulu 16
那么,尾随轴的含义在链接的文档页面上有解释.如果您有两个具有不同维度编号的数组,例如一个1x2x3和另一个2x3,那么在这种情况下,只比较尾随的公共维度2x3.但是如果你的数组都是二维的,那么它们的相应大小必须相等或者其中一个必须相同1.数组具有大小的维度1称为单数,并且可以沿着它们广播数组.
在你的情况下,你有一个2x2和4x2,4 != 2而且没有4或2等于1,所以这不起作用.
| 归档时间: |
|
| 查看次数: |
10200 次 |
| 最近记录: |