如何通过每个元素的乘法逆元交换矩阵的列而不进行舍入?

问题描述 投票:0回答:1

我需要通过每个元素的乘法逆元来交换矩阵列的元素,但是进行更改时,数字将四舍五入为零。我正在使用Python。

我试过了

matriz_atributos_max=np.array([
    [1500,12,64,24],
    [1800,12,128,18],
    [5000,20,128,10],
])

matriz_atributos_max_nova=matriz_atributos_max.copy()

for i in range(3):
  matriz_atributos_max_nova[i,0]=1/matriz_atributos_max[i,0]
matriz_atributos_max_nova

我也尝试过

for i in range(3):
  matriz_atributos_max_nova[i,0]=round(1/matriz_atributos_max[i,0],6)
matriz_atributos_max_nova

我也尝试过

matriz_atributos_max_nova[:,0]=1/matriz_atributos_max_nova[:,0]

结果是一样的。结果是:

array([[  0,  12,  64,  24],
       [  0,  12, 128,  18],
       [  0,  20, 128,  10]])

但我需要

array([[  0.000666,  12,  64,  24],
       [ 0.000555,  12, 128,  18],
       [  0.0002,  20, 128,  10]])
python numpy matrix rounding inverse
1个回答
0
投票

尝试一下,对于以科学记数法显示的数字,输出提供大约 9 位小数的精度。

import numpy as np

matriz_atributos_max = np.array([
    [1500, 12, 64, 24],
    [1800, 12, 128, 18],
    [5000, 20, 128, 10],
], dtype=float)

reciprocal_first_column = 1 / matriz_atributos_max[:, 0]
matriz_atributos_max[:, 0] = reciprocal_first_column
print(matriz_atributos_max)

输出

[[6.66666667e-04 1.20000000e+01 6.40000000e+01 2.40000000e+01]
 [5.55555556e-04 1.20000000e+01 1.28000000e+02 1.80000000e+01]
 [2.00000000e-04 2.00000000e+01 1.28000000e+02 1.00000000e+01]]
© www.soinside.com 2019 - 2024. All rights reserved.