我对下面的矩阵有个除法错误。我想用行和的10×1向量除以10×10matrix
。在
[[5731, 3, 20, 8, 12, 54, 46, 8, 39, 2],
[ 2, 6472, 47, 24, 7, 44, 7, 11, 116, 12],
[ 55, 36, 5296, 104, 84, 27, 106, 53, 183, 14],
[ 50, 49, 132, 5312, 2, 253, 36, 58, 142, 97],
[ 16, 28, 36, 9, 5381, 11, 55, 24, 85, 197],
[ 62, 45, 30, 181, 77, 4631, 117, 28, 161, 89],
[ 33, 23, 37, 1, 43, 92, 5642, 4, 42, 1],
[ 20, 20, 74, 23, 55, 14, 4, 5788, 18, 249],
[ 52, 155, 74, 143, 14, 170, 50, 30, 5036, 127],
[ 43, 32, 32, 85, 174, 40, 2, 197, 79, 5265]]
行的sum_vector
:
但是,当除法发生matrix / sum_vector
时,我一直得到下面的矩阵
[[0 0 0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0 0]]
我可以将矩阵除以标量,它将正确返回。不过,我的部门会返回所有的零。在
我也试过np.divide(matrix, sum_vector.reshape((10,1)))
和{
我觉得我遗漏了一些矩阵的维数,但我想不出来。在
建议?在
整型除法在人们习惯它之前有些不直观。结果应该是整数,因此没有小数。Python处理这个问题的方法是向下舍入到最接近的较小整数。{在Python中用整型整除^时,用整型整除。在
在python3中,行为是改变的,因此即使两个操作数都是整数,
/
运算符也将生成一个浮点答案。相反,必须使用//
来指定实际需要的整数除法。在在Python2中,将一个整数除以另一个整数将得到一个整数结果,该结果将向下舍入到最接近的整数值。纽比遵循同样的惯例。由于
sum_vector
中的所有值都大于matrix
中的所有值,因此结果将是一个零数组。在要执行浮点除法,需要将一个或两个输入数组强制转换为浮点
dtype
,例如result = matrix.astype(np.double) / sum_vector
。在The situation is different in Python3,其中
/
默认执行浮点除法,如果需要整型结果,则使用//
(即floor division operator)。您还可以通过从__future__
导入division
来获得Python2中的新型除法行为:相关问题 更多 >
编程相关推荐