3

それぞれが同じ次元を持つ numpy 配列のリストが与えられた場合、要素ごとに最大値を含む配列を見つけるにはどうすればよいですか?

例えば

import numpy as np
def find_index_where_max_occurs(my_list):
    # d = ...  something goes here ...
    return d

a=np.array([1,1,3,1])
b=np.array([3,1,1,1])
c=np.array([1,3,1,1])

my_list=[a,b,c]

array_of_indices_where_max_occurs = find_index_where_max_occurs(my_list)

# This is what I want:
# >>> print array_of_indices_where_max_occurs
# array([1,2,0,0])
# i.e. for the first element, the maximum value occurs in array b which is at index 1 in my_list.

どんな助けでも大歓迎です...ありがとう!

4

3 に答える 3

1
[np.argmax(x) for x in zip(*my_list)]

これは単なるリストですが、必要に応じて配列にする方法を知っています。:)

これが何をするかを説明するには:zip(*my_list)は と同等でzip(a,b,c)、ループするジェネレータを提供します。ループ内の各ステップは、 のようなタプルを提供します。(a[i], b[i], c[i])ここiで、 はループ内のステップです。次に、np.argmax最大値を持つ要素のそのタプルのインデックスを提供します。

于 2013-04-25T14:48:17.873 に答える