首页 > 解决方案 > Python:循环矩阵以检查向量中的所有值

问题描述

我有这个向量:possibleGrades=np.array([-3,0,2,4,7,10,12])

我希望计算机告诉我这个矩阵中的哪些值不是来自向量:

    [[ 7.   7.   4. ]
 [12.  10.  10. ]
 [-3.   7.   2. ]
 [10.   8.  12. ]
 [ nan  7.   nan]
 [ 7.   7.  10. ]
 [ 4.5  nan  2. ]
 [ 2.  12.   4. ]]

我的想法:

for i in range(matrixGr):
    if (-3) in matrixGr:
        pass
    elif 0 in matrixGr:
        pass
    elif 2 in matrixGr:
        pass
    elif 4 in matrixGr:
        pass
    elif 7 in matrixGr:
        pass
    elif 10 in matrixGr:
        pass
    elif 12 in matrixGr:
        pass
    else:
        print("The data set contains incorrect grades at {location?}!")

但这是不可能的,如何做到这一点超出了我的心理承受能力。

什么是聪明可行的方法?

如果可以说“行 X 包含无效的 8 级(例如)”,那就太好了,所以带有字符串“行 {:s} 的东西有无效的等级 {:s}”和 .format("something smart ")

有人能帮忙吗?

标签: pythonarrayspandasnumpyvector

解决方案


你可以试试这个:

import numpy as np

possibleGrades = np.array([-3, 0, 2, 4, 7, 10, 12])

matrixGr = np.array([[7, 7, 4],
                   [12, 10, 10],
                   [-3, 7, 2],
                   [10, 8, 12],
                   [np.nan, 7, np.nan],
                   [7, 7, 10],
                   [4.5, np.nan, 2],
                   [2, 12, 4]])

locations = [(i, j) for i in range(matrixGr.shape[0]) for j in range(matrixGr.shape[1]) if matrixGr[i, j] not in possibleGrades]
locations:
[(3, 1), (4, 0), (4, 2), (6, 0), (6, 1)]

祝你好运 !


推荐阅读