运算符不支持 Numpy 广播 /=
Numpy broadcasting is not supported by the operant /=
我正在学习 Coursera 上的深度学习课程。
我发现在做矩阵除法的时候,像这样:
x_norm = np.linalg.norm(x, axis=1, keepdims=True)
x = x / x_norm
它工作正常。但是当我的声明改为:
x /= x_norm
它不起作用,为什么?
如果 x
是整数 dtype 数组,您将得到此 casting
错误:
In [1]: x = np.arange(1,4)
In [2]: x /= 10
Traceback (most recent call last):
Input In [2] in <cell line: 1>
x /= 10
UFuncTypeError: Cannot cast ufunc 'true_divide' output from dtype('float64') to dtype('int64') with casting rule 'same_kind'
如果数组浮动就没有这样的问题:
In [3]: y = x.astype(float)
In [4]: y /= 10
In [5]: y
Out[5]: array([0.1, 0.2, 0.3])
*= 0.1
也会引发转换错误。任何试图将 float 放入 int 数组的东西。像 x[:] = 1.1
这样的赋值会默默地将浮点数转换为整数——这是一个更常见的困惑原因。
我正在学习 Coursera 上的深度学习课程。
我发现在做矩阵除法的时候,像这样:
x_norm = np.linalg.norm(x, axis=1, keepdims=True)
x = x / x_norm
它工作正常。但是当我的声明改为:
x /= x_norm
它不起作用,为什么?
如果 x
是整数 dtype 数组,您将得到此 casting
错误:
In [1]: x = np.arange(1,4)
In [2]: x /= 10
Traceback (most recent call last):
Input In [2] in <cell line: 1>
x /= 10
UFuncTypeError: Cannot cast ufunc 'true_divide' output from dtype('float64') to dtype('int64') with casting rule 'same_kind'
如果数组浮动就没有这样的问题:
In [3]: y = x.astype(float)
In [4]: y /= 10
In [5]: y
Out[5]: array([0.1, 0.2, 0.3])
*= 0.1
也会引发转换错误。任何试图将 float 放入 int 数组的东西。像 x[:] = 1.1
这样的赋值会默默地将浮点数转换为整数——这是一个更常见的困惑原因。