我有一个从 numpy 创建的 python 数组:
a = [[1. 0.5 0.3 ... 0.71 0.72 0.73]
[0. 0.4 0.6 ... 0.74 0.75 0.76]
[0. 0.3 0. ... 0.72 0.73 0.74]
...
[0. 0.2 0.3 ... 0.56 0.57 0.58]
[0. 0.1 0.3 ... 0.67 0.68 0.69]]
和另一个数组
b = [[1. 0.5 0.6 ... 0.74 0.75 0.76]]
我从 np.max(a, axis=0)
得到的。现在我需要数组的索引,其中数组 'a' 中的值等于我使用的 'b' 中的相应值:
locn = []
for i in range(0, len(b[0])):
for j in range(0, len(a)):
fav = np.where(a[j][i] == b[0][j])
locn.append(fav)
print(locn)
我得到的输出为
[(array([0]),), (array([0]),), (array([0]),), (array([0]),), (array([], dtype=int64),), (array([], dtype=int64),), (array([], dtype=int64),), (array([], dtype=int64),), (array([0]),), (array([0]),), (array([0]),), (array([0]),), (array([], dtype=int64),), ............
我本可以使用 np.where(a == np.max(a)) 来获取最大值的位置,但这不是我的问题。我需要确切的位置(比如第一个数组的第一个元素……或类似的东西)在 loc[] 中附加数组的索引。例如:对于第一轮 1 是最高的,我只需要将 附加索引值 0 到 新列表 locn[] 因为 0 是第一轮的索引其中内部数组的元素等于最大值。
我该怎么做?提前致谢。
最佳答案
您可以使用函数 argmax
而不仅仅是 max。例如
a = np.random.randint(10, size=(4, 5))
[
[8 9 6 4 7]
[6 4 0 3 6]
[7 5 9 1 6]
[1 4 8 8 9]
]
np.max(a, axis=0)
array([8, 9, 9, 8, 9])
np.argmax(a, axis=0)
array([0, 0, 2, 3, 3], dtype=int64)
如果你想按照你描述的方式打印信息,那么你可以这样做
b = np.argmax(a, axis=0)
print('locn'+str(b))
locn[0 0 2 3 3]
关于python - 从 numpy.where() 获取值的位置作为单个值并将其附加到另一个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49643676/