我要做的是根据需要为用户输入多个行,并将其转换为数组。之后,我想找到数组中最高数字的位置,数字类型的(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。我使用它的唯一原因是因为这是学校的快速作业。
答案 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)