多次元のNumpy配列を含む2つのリストがある場合、リスト内の配列が他のリストにあるかどうかをどのように確認できますか?配列のリスト:あるリストの配列が別のリストにあるかどうかを確認するにはどうすればいいですか?
私は要素が含まれ、どちらも二つのリストを持っている場合は、私はそうのように、それは第二のリストにあるかどうかを判断するために、1つのリスト(要素ごとの)を介して検索することができます。
all_numbers = [1,2,3,4,5,6,7,8,9,10]
even_numbers = [2,4,6,8,10]
for i in all_numbers:
if i in even_numbers:
print(i,'is an even number.')
else:
print(i,'is an odd number.')
出力:私は多次元配列を含んでどちらの二つのリストを持っている場合は、1つのリスト内の配列は、同じ方法を使用して他にある場合
1 is an odd number.
2 is an even number.
3 is an odd number.
4 is an even number.
5 is an odd number.
6 is an even number.
7 is an odd number.
8 is an even number.
9 is an odd number.
10 is an even number.
は今、なぜ私は検索できないのですか?配列はすべて多次元であり、データファイル(urllib
およびnumpy
モジュールを使用)から生成されます。私が理解する限り、リスト内の配列は単純な要素なので、同じメソッドを使用すると同じ結果が得られます。しかし、プログラムを実行しようとすると、次のメッセージが表示されます。
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
なぜこのようなことが起こりますか?明らかに、多次元配列を使うことはリストの単純な要素と同じではありません。 1つのリストの配列が別のリストにあるかどうかを確認する方法がありますか?
[以下は私のプログラムの例です。私は多次元配列であるいくつかのデータファイルを使用しています。プログラムの一般性を維持するために、私は実際のURLを削除しました。データファイルは、1981年から1990年までの年単位で整理されているため、閏年を除いて、ファイルの情報量は同じで、余分な1日分のデータが含まれています。私の2つのリストは、すべてのファイルを持つものと、うるう年のファイルを持つものです。 。必要とされている他の情報がある場合は私に知らせてください]
import numpy as np
import urllib.request
data1981url = '1981url'
data1981 = np.genfromtxt(data1981url)
data1982url = '1982url'
data1982 = np.genfromtxt(data1982url)
data1983url = '1983url'
data1983 = np.genfromtxt(data1983url)
data1984url = '1984url'
data1984 = np.genfromtxt(data1984url)
data1985url = '1985url'
data1985 = np.genfromtxt(data1985url)
data1986url = '1986url'
data1986 = np.genfromtxt(data1986url)
data1987url = '1987url'
data1987 = np.genfromtxt(data1987url)
data1988url = '1988url'
data1988 = np.genfromtxt(data1988url)
data1989url = '1989url'
data1989 = np.genfromtxt(data1989url)
data1990url = '1990url'
data1990 = np.genfromtxt(data1990url)
years = [data1981, data1982, data1983, data1984, data1985, data1986, data1987, data1988,
data1989, data1990]
leapyears = [data1984, data1988]
years_by_day = []
flux_data = []
for i in years:
y = i[:,46]
for k in y:
flux_data.append(k)
if i in leapyears: # Where the problem arises.
x = i[0,0] + np.arange(len(y))/105480
for j in x:
years_by_day.append(j)
else:
x = i[0,0] + np.arange(len(y))/105120
for j in x:
years_by_day.append(j)
出力:ブール値のndarray
を返し==
eq
演算子を使用して[1 2 3]
と[1 2 1]
のような2つのnumpy
の配列を比較すると
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
印刷 'kは、私はブール値の配列であると確信しています。これは 'if'では使用できません。一般に、配列をテストするときに 'in'は動作しません。 – hpaulj
これが役立つかどうかを確認する - http://stackoverflow.com/questions/38674027/find-the-row-indexes-of-several-values-in-a-numpy-array – Divakar