0
我遇到了一个问题,试图用新行替换numpy 2-d数组中的一行。在numpy数组中替换行时出错
我想写一个函数来取m
m
矩阵(n个m长度向量样本)并返回一个正交基集。对于第一步,我正在计算第一行的长度,然后除以该值(标准化第一行)。当我尝试归行分配回原来的矩阵,我打了一个错误:
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])
。
就是这样。它是python 2.7,但我认为我已经用'from __future__ import division'保护了这一点。我没有意识到这不会传播到广播业务。 – piovere
我不认为numpy帐户那个 –
四舍五入没有发生在部门,它发生在作业中。尝试做z [0 ,:] = [0.33333333,0.66666667,-0.66666667],你会看到同样的事情。当你试图将一个float放入一个int数组时,numpy将float转换为int而不是改变数组的类型。 – Acccumulation