Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Numpy:多维数组的真值比较_Python_Arrays_Numpy_Multidimensional Array_Sudoku - Fatal编程技术网

Python Numpy:多维数组的真值比较

Python Numpy:多维数组的真值比较,python,arrays,numpy,multidimensional-array,sudoku,Python,Arrays,Numpy,Multidimensional Array,Sudoku,因此,我正在编写一个数独解算器,使用9x9数组作为网格,使用9x9x9数组作为其可能性。由于我使用的回溯算法,我必须检查数独是否仍然有效,又名: 如果有一个字段不包含数字并且没有剩余的可能性,则返回False。 到目前为止,我实施了以下措施: for j in range(9): for i in range(9): if puzzle[j,i] == 0 and (solving[j,i] == 0).sum() == 9:

因此,我正在编写一个数独解算器,使用9x9数组作为网格,使用9x9x9数组作为其可能性。由于我使用的回溯算法,我必须检查数独是否仍然有效,又名:

如果有一个字段不包含数字并且没有剩余的可能性,则返回False。 到目前为止,我实施了以下措施:

    for j in range(9):
        for i in range(9):
            if puzzle[j,i] == 0 and (solving[j,i] == 0).sum() == 9:
                return False
    return True
    solving[where(puzzle == 0)]
例如,如果(j,i)处的正方形包含选项2、3和7,则相应的可能性数组为:

    solving[j,i] = array([0, 2, 3, 0, 0, 0, 7, 0, 0], dtype = int8)
我试图在解算器中的此处和其他位置避免此类循环。我试着这样做:

    for j in range(9):
        for i in range(9):
            if puzzle[j,i] == 0 and (solving[j,i] == 0).sum() == 9:
                return False
    return True
    solving[where(puzzle == 0)]
这返回了一个nx9数组,其中n是我的拼图中的空方块数。如果形状为1x9的n个数组中的任何一个正好等于

    array([0,0,0,0,0,0,0,0,0], dtype = int8)
但是,我在各种尝试中都没有成功,包括.any()和.all()实验。这是我使用的最新代码:

    def is_valid(self, puzzle, solving):
        if (solving[py.where(puzzle == 0)].all() == 0).sum() > 0:
            return False
        return True

。。。它总是返回False。编写此代码的正确方法是什么?

我认为以下是您要执行的检查:

np.all(puzzle | np.any(solving, axis=-1)
如果所有单元格都指定了值(
puzzle
),或者(
|
)在
求解中至少有一个非零条目(
np.any(求解,轴=-1)
),则返回
True

!很简单:)我想我真的不明白np.all()和np.any()做什么。非常感谢。