Numpy矩阵除法返回所有零

2024-05-19 21:14:39 发布

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

我对下面的矩阵有个除法错误。我想用行和的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

^{pr2}$

但是,当除法发生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]]

我试过这个post和这个post,但还是得到了所有的零。在

我可以将矩阵除以标量,它将正确返回。不过,我的部门会返回所有的零。在

我也试过np.divide(matrix, sum_vector.reshape((10,1)))和{}。在

我觉得我遗漏了一些矩阵的维数,但我想不出来。在

建议?在


Tags: 错误np矩阵post向量matrix部门sum
2条回答

整型除法在人们习惯它之前有些不直观。结果应该是整数,因此没有小数。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中的新型除法行为:

In [1]: 5 / 2
Out[1]: 2

In [2]: from __future__ import division

In [3]: 5 / 2
Out[3]: 2.5

In [4]: 5 // 2  # floor division operator
Out[4]: 2

相关问题 更多 >