如果行python中已存在该值,如何将矩阵中的行中的所有值设置为特定值

时间:2016-06-16 10:34:18

标签: python matrix

如果行中随机位置存在相同的值,如何将矩阵中一行中的所有元素更改为某个值? 我想在所有行中找到所有元素'-3'并将所有元素设置为该值。 这是我到目前为止所得到的,但我的循环似乎不起作用。 后面我正在排序所有行并删除第一列。这很好。

def computeFinalGrades(grades):
if len(grades) <=1 :    
    gradesFinal=grades
if len(grades) > 1 : 
    for i in range(len(grades)):
        if np.any(grades[i,:]) ==(-3) :
            b=np.zeros(np.shape(grades[1]))
            b[b==0]=-3
            grades[i,:]=b
    grades1=np.sort(grades)
    grades2=np.delete(grades1,0,axis=1)
    gradesFinal=roundGrade(grades2.mean(1))
return gradesFinal
print(computeFinalGrades(np.matrix([[-3,0,3],[5,3,4],[9,5,6],[6,5,8]])))

应该采用第一行并用'-3'替换所有元素

我的预期输出应为

[[-3.]
[4.]
[7.]
[7.]]

2 个答案:

答案 0 :(得分:1)

检查一下:

for i in range(grades.shape[0]):
 if any(j == -3 for j in grades[i,:]):
        grades[i,:] = -3

答案 1 :(得分:0)

np.any(grades [i,:])总是返回true,所以它显然是错误的使用函数。为什么要使用numpy?

此外,您应该包含人员的导入行以测试您的代码:

 #!/usr/bin/env python
 import numpy as np