Numpy 数组无法按照网站和论坛上所示的方式工作,参考访问 2D 数组切片/访问元素索引

问题描述 投票:0回答:1

我最初的问题是尝试通过将所需元素(在我的例子中为“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]))'

任何帮助将不胜感激。

python indexing numpy-ndarray
1个回答
0
投票

尝试删除 np.array:

之后的换行符
import numpy as np

map1 = np.array([
  ["#", " ", " ", " ", " ", " ", " ", "O", "#"],
  ["#", " ", "#", "#", "#", "#", "#", " ", "#"],
  [" ", " ", "#", " ", " ", " ", "#", " ", "#"],
  [" ", "#", "#", " ", "#", " ", "#", " ", "#"],    
  [" ", " ", "#", " ", "#", " ", "#", " ", "#"],
  ["#", " ", "#", " ", "#", " ", "#", " ", "#"],
  [" ", " ", "#", " ", "#", " ", "#", " ", "#"],
  [" ", "#", "#", " ", "#", " ", " ", " ", "#"],
  [" ", " ", " ", " ", "#", "#", "#", "#", "#"],
  ["#", "#", "#", "X", "#", "#", "#", "#", "#"]])

O = np.where(map1 == "O")

print(O)
© www.soinside.com 2019 - 2024. All rights reserved.