python - Numpy 矩阵除法返回全零

标签 python numpy matrix

下面的矩阵存在除法错误。我想用行总和的 10 x 1 向量来划分 10 x 10 矩阵。

[[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:

[[5923],
 [6742],
 [5958],
 [6131],
 [5842],
 [5421],
 [5918],
 [6265],
 [5851],
 [5949]]

但是,当除法发生时,我不断得到下面的这个矩阵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)))matrix/matrix.sum(axis=1)[:,None ]

我觉得我错过了矩阵维度的一些东西,但我无法弄清楚。

建议?

最佳答案

在Python2中,一个整数除以另一个整数会得到一个整数结果,该结果将向下舍入到最接近的整数值。 Numpy 遵循相同的约定。由于 sum_vector 中的所有值都大于 matrix 中的所有值,因此结果将是一个由零组成的数组。

要执行浮点除法,您需要将一个或两个输入数组转换为浮点dtype,例如结果=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

关于python - Numpy 矩阵除法返回全零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44101256/

相关文章:

python - 为机器人用户创建 Slack channel

python - 给定一个字符串,波兰表示法中最长的 WFF 之一的长度是多少?

python - Python 中的网格网格函数 (meshgrid mgrid ogrid ndgrid)

python - 在 numpy 数组中,我想将一列复制到另一个矩阵并从原始矩阵中删除该列

c++ - 如何从 glm::mat4 中读取值

r - 自动更改矩阵长度和行名称

python - 更好的错误报告 mako

python - 对于 Python 支持,最好从哪家公司获得托管服务?

python - 如何在Python中计算彩色图片中白色和黑色像素的数量?如何使用 numpy 计算总像素

python - matplotlib 中的金字塔 3D 直方图(如 1976 年有关 SVD 的历史电影)