替换numpy数组中的行时出错

2024-06-11 04:03:16 发布

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

我在尝试用新行替换numpy二维数组中的行时遇到了一个问题。你知道吗

我正在尝试编写一个函数来获取nm矩阵(m长度向量的n个样本)并返回一个正交基集。对于第一步,我计算第一行的长度,然后除以该值(规范化第一行)。当我尝试将规范化行赋回到原始矩阵时,遇到了一个错误:

import numpy.linalg as la

def gauss_jordan(z):
    print(z[0])
    print(la.norm(z[0]))
    print(z[0] / la.norm(z[0])))
    print((z[0] / la.norm(z[0])).shape)
    z[0, :] = z[0, :] / la.norm(z[0])

    print(z)

结果是:

[ 1  2 -2]
3.0
[ 0.33333333  0.66666667 -0.66666667]
(3,)
[[ 0  0  0]
 [-1  3  1]
 [-2  1  3]
 [ 1 -2  5]]

零行从哪里来?计算出的数值都是正确的,但我不知道我的作业有什么问题。我也试过z[0,:] = z[0] / la.norm(z[0])。你知道吗


Tags: 函数importnumpynorm错误矩阵数组规范化
1条回答
网友
1楼 · 发布于 2024-06-11 04:03:16

在我看来,它是取整除法而不是普通除法。 如果你试着

z = z.astype('float64')
z[0] /= la.norm(z[0])

另外,您使用的是什么版本的numpy和python?有可能是Python2.X吗?你知道吗

相关问题 更多 >