zmorris zmorris - 8 days ago 7
Python Question

Find Element In Two-Dimensional Python Array

What I am trying to do is take a user input for as many rows as they wish, and make it into an array. After that i want to find where the highest number is in the array, an (x,y) coordinate of the number type of thing. I have created the initial array in different way but for example I have:

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)


The printing is just so i can see what it is doing. As a final i just want to see the last line in this example:

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)


Extra info: I don't care if it uses numpy of not. and i wouldn't be against using separate functions, when i think about it it might be a good idea; one to create an array and a separate to locate the largest number.

Thanks in advance.

PS. As the comment says, eval shouldn't usually be used because of security risks. The only reason I am using it is because this is a quick assignment for school.

Answer

This is an implementation without using numpy. It is not that efficient, but works fine.

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)