私はnumpy.where(condition[, x, y])
の機能を試しています。返す、唯一の条件が与えられている場合numpy.where(条件)の出力は配列ではなく、配列のタプルです:なぜですか?
:私はあなたが入力として一つだけの配列を与えた場合、それは、配列が非ゼロ(すなわち「真」)であるインデックスを返す必要があることを学ぶnumpy documentation,から
tuple condition.nonzero()、 インデックスは、条件が真であるインデックスです。
しかし、それをしようとした場合、それは私の最初のインデックスの指名手配リストであり、第二がnull要素である二つの要素のタプル、返す:質問そう
>>> import numpy as np
>>> array = np.array([1,2,3,4,5,6,7,8,9])
>>> np.where(array>4)
(array([4, 5, 6, 7, 8]),) # notice the comma before the last parenthesis
をです:なぜですか?この行動の目的は何ですか?どのような状況でこれは役に立ちますか? 実際、インデックスの必要なリストを取得するには、np.where(array>4)[0]
のようにインデックスを追加する必要があります。これは... "醜い"と思われます。
補遺
私はそれが実際にただ一つの要素のタプルであることを(いくつかの回答から)理解しています。それでも私はこのように出力を与える理由を理解していません。これは理想的ではない方法を説明するために、(最初の場所で私の質問をやる気)以下のエラーを考慮してください。あなたは、インデックスの実際の配列にアクセスするには、いくつかのインデックス作成を行う必要があり
>>> import numpy as np
>>> array = np.array([1,2,3,4,5,6,7,8,9])
>>> pippo = np.where(array>4)
>>> pippo + 1
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: can only concatenate tuple (not "int") to tuple
よう:
>>> pippo[0] + 1
array([5, 6, 7, 8, 9])
「np.argwhere」についてはどうですか? – Divakar
あなたが望むのは、 'a.ravel()を実行する' np.flatnonzero'です。nonzero()[0] '。 – hpaulj