我最初的问题是尝试通过将所需元素(在我的例子中为“O”)传递到一个将返回其列和行的函数来访问 2D 数组中特定元素的 x 和 y 坐标
下面的代码是我正在尝试执行此操作的代码。 我计划之后实现一个 for 循环来检查 2D 数组的每一行或每一列
import numpy as np
map1 = np.array
([["#", " ", " ", " ", " ", " ", " ", "O", "#"],
["#", " ", "#", "#", "#", "#", "#", " ", "#"],
[" ", " ", "#", " ", " ", " ", "#", " ", "#"],
[" ", "#", "#", " ", "#", " ", "#", " ", "#"],
[" ", " ", "#", " ", "#", " ", "#", " ", "#"],
["#", " ", "#", " ", "#", " ", "#", " ", "#"],
[" ", " ", "#", " ", "#", " ", "#", " ", "#"],
[" ", "#", "#", " ", "#", " ", " ", " ", "#"],
[" ", " ", " ", " ", "#", "#", "#", "#", "#"],
["#", "#", "#", "X", "#", "#", "#", "#", "#"]])
O = map1[0,:]
print(O)
运行此代码会出现错误: 'builtin_function_or_method' 对象不可下标'
根据我搜索后的理解,数组“map1”甚至不应该被视为函数或方法,所以我不确定为什么会收到此错误。
在此之前,我尝试使用相同的代码片段:
'O = map1[0,:]'
替换为:
'O =(np.where(map1 == "O"))'
直接查找行和列,但这在我的终端中输出:
'(数组([], dtype=int64),)'
从我读过的论坛中应该输出:
'(map1([0]),map1([7]))'
任何帮助将不胜感激。
尝试删除 np.array:
之后的换行符import numpy as np
map1 = np.array([
["#", " ", " ", " ", " ", " ", " ", "O", "#"],
["#", " ", "#", "#", "#", "#", "#", " ", "#"],
[" ", " ", "#", " ", " ", " ", "#", " ", "#"],
[" ", "#", "#", " ", "#", " ", "#", " ", "#"],
[" ", " ", "#", " ", "#", " ", "#", " ", "#"],
["#", " ", "#", " ", "#", " ", "#", " ", "#"],
[" ", " ", "#", " ", "#", " ", "#", " ", "#"],
[" ", "#", "#", " ", "#", " ", " ", " ", "#"],
[" ", " ", " ", " ", "#", "#", "#", "#", "#"],
["#", "#", "#", "X", "#", "#", "#", "#", "#"]])
O = np.where(map1 == "O")
print(O)