在二维Python数组中查找元素

时间:2016-11-28 06:31:03

标签: python arrays list numpy multidimensional-array

我要做的是根据需要为用户输入多个行,并将其转换为数组。之后,我想找到数组中最高数字的位置,数字类型的(x,y)坐标。我以不同的方式创建了初始数组,但例如我有:

  import numpy as np
  m = []
  rows = eval(input("How many rows in the list:"))
  for row in range(rows):
      m.append([])
      value = eval(input("Enter a row:"))
      m[row].append(value)
  m = np.array(m)
  print(m)
  M = np.amax(m)
  print(M)
  index = np.where(M)
  print(index)  

打印就是这样,我可以看到它在做什么。作为决赛我只想看看这个例子中的最后一行:

   Enter the number of rows in the list:3          
   Enter a row: 1,5,6        
   Enter a row: 2,6,7     
   Enter a row: 5,26,12     
   The location of the largest element is at (1, 2)

额外信息:我不在乎它是否使用了numpy。并且我不会反对使用单独的功能,当我想到它可能是个好主意;一个用于创建数组,另一个用于定位最大数字。

提前致谢。

PS。正如评论所说,由于安全风险,通常不应使用eval。我使用它的唯一原因是因为这是学校的快速作业。

2 个答案:

答案 0 :(得分:1)

这给出了max -

的(行,列)索引
import numpy as np

m = np.array([[1,5,6],[2,6,7],[5,26,12]]) # input minified
print(m)

print np.unravel_index(m.argmax(), m.shape) # main code you need

答案 1 :(得分:1)

这是一个不使用numpy的实现。效率不高,但效果很好。

rows = eval(input("How many rows in the list:"))
m = []
for row in range(rows):
  value = eval(input("Enter a row:"))
  m.append(value)

large = m[0][0]
x = 0
y = 0

for i in range(0, rows):
  for j in range(0, len(m[i])):
    if(large < m[i][j]):
     large = m[i][j]
     y = i
     x = j
print(x, y, large)