我正在尝试使用python编写脚本来通过右手方法解决迷宫问题。我写了下面的脚本来读取迷宫的文件并将其放入numpy 2D数组中。现在,我想搜索数组的第一行并找到0.这个0是迷宫的起点。从这里开始,我将应用我的迷宫算法来检查正方形是否有1或0的正方形。
Maze_matrix是包含我的迷宫的矩阵,我想找到第一行中第一个0的索引。
#!/usr/bin/python
import sys
import numpy as np
import itertools
if len(sys.argv) == 3:
maze_file = sys.argv[1]
soln_file = sys.argv[2]
rows = []
columns = []
with open(maze_file) as maze_f:
for line in maze_f:
row, column = line.split()
row = int(row)
column = int(column)
rows.append(row)
columns.append(column)
maze_matrix = np.zeros((rows[0], columns[0]))
for line1, line2 in zip(rows[1:], columns[1:]):
maze_matrix[line1][line2] = 1
print maze_matrix
else:
print('Usage:')
print(' python {} <maze file> <solution file>'.format(sys.argv[0]))
sys.exit()
答案 0 :(得分:1)
我建议你看一下numpy.array方法argmin
:
>>> n = numpy.ones(100)
>>> n[50] = 0
>>> n.argmin()
50
答案 1 :(得分:1)
我建议使用numpy.where()。它具有非常好的性能,可以同时搜索整个数组(或子集)。如果元素的条件为真,则返回一个索引为该元素的数组。
In [1]: import numpy as np
In [2]: a = np.random.randint(0, 9, (4,4))
In [8]: a
Out[8]:
array([[6, 5, 0, 3],
[4, 5, 8, 6],
[0, 3, 4, 4],
[6, 4, 6, 7]])
In [9]: np.where(a == 0)
Out[9]: (array([0, 2]), array([2, 0])) # two 0's found
# first at a[0, 2] (row 0, column 2)
# second at a[2, 0] (row 2, column 0)