最小値が複数あった場合、argminで最小値のargumentを複数返す方法は、ありますか??
Series型です。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答3件
0
これでうまくいくと思います。
python
1np.where(ser==ser.min())
投稿2018/07/27 09:54
総合スコア3376
0
普通ですみません。
python
1def argmins(x): 2 return [v[0] for v in enumerate(x) if v[1] == x.min()] 3 4l = [3, 1, 2, 3, 1, 1] 5print(argmins(np.array(l))) #=> [1, 4, 5] 6print(argmins(Series(l))) #=> [1, 4, 5]
投稿2018/07/27 06:31
編集2018/07/27 14:54総合スコア16731
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
return [v[0] for v in enumerate(x) if v[1] == np.min(x)]
リスト内包表記の中の最小値評価は一度になりますか?
ちょっと自信がないので伺っています。
minにするとxに関するキャストが走るのでやばいです。
2018/07/27 10:03 編集
>>リスト内包表記の中の最小値評価は一度になりますか?
そういうのは気にせず回答してます。すみません。
>>minにすると
.min()だとokってことでしょうか?
listで使えなかったので今の形にしてしまいました。
2018/07/27 12:17
x.min()かnp.min(x)ですね。
minは組み込み関数なので、np.arrayからlistへのキャストが実行されてからlistに対して最小値を取ってしまいます。
2018/07/27 14:55
なるほど。list対応なんて余計なことしちゃいましたね。
回答はlist非対応に修正しておきました。
ツッコミありがとうございました。
0
numpyでしょうか?
ぱっと思いついたのは、numpy.argwhereを使う方法です。
Python
1import numpy as np 2 3arr = np.random.randint(5, size=(10, 10)) 4indice = np.argwhere(arr==arr.min()) 5 6print(indice)
投稿2018/07/27 04:44
総合スコア35658
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。