【发布时间】:2020-09-03 00:36:43
【问题描述】:
正如标题所说,我试图在不使用内置 max 函数的任何变体的情况下找到参数的最大值和位置。
我能够将它拼凑成一个基本的np.array,但我很难将它转换成一个矩阵......我认为是因为它的索引方式。
这是我为np.array 准备的:
a = np.array((1,2,2,3,4,3,2,1,4,3))
def argmax(x):
maximum = 0
for i in range(len(x)):
if x[i] > maximum: maximum = x[i]
pos = np.argwhere(x == maximum)[0][0]
return(print('The maximum value of the array is', maximum, 'and is located at index', pos))
argmax(a)
数组的最大值为4,位于索引4处。
我正在尝试为任何大小的矩阵创建类似的东西,而不使用内置的 max 函数。有人可以帮我解决这个功能并帮助我理解基本数组和矩阵之间索引的区别吗?
【问题讨论】:
-
您不能在迭代时跟踪
i和maximum(如果需要,还可以跟踪j列)?argwhere看起来需要做很多额外的工作。将此数组视为列表或列表列表。事实上,当这样迭代时,使用列表列表会更快。 -
您的阵列最多是二维的还是更高维度的?
-
另外,如果 max 发生多次,你想要一个随机最大值还是全部的位置?您的数组是否包含所有非负值?
-
@hpaulj。我已经发布了一个相当笼统的答案。我认为使用数组肯定更简单,因为您可以使用掩码。
-
大家好,感谢您的快速回复!这些都是二维数组。如果它出现多次,我更喜欢最大值的所有位置。没有负值。
标签: python arrays function numpy matrix