4

numpy.where のインデックス値を使用して、そのインデックスの文字列の内容を出力したいと考えています。配列を 0 から配列の長さまで反復処理することで、これを実行しようとしています。しかし、長さは常に 1..?

import numpy as np
v,w,x, y, z = np.loadtxt('test.txt', dtype=str, delimiter='|',
                             skiprows=2,usecols=(0,1,2,3,4), unpack=True)
a,b,c, d, e = np.loadtxt('test2.txt', dtype=str, delimiter='|',
                             skiprows=2,usecols=(0,1,2,3,4), unpack=True)

checkValue = np.in1d(a, v)
missingValue=(np.where(checkValue==False))
print len(missingValue)
for i in range (len(MissingValue)):
    print a[i]

これは値を 1 つだけ出力しますが、配列には実際には 10 があります

4

1 に答える 1

3

numpy.where引数が 1 次元の場合でも、常に配列のタプルを返します。次元ごとに 1 つの配列を返します。

例えば:

In [2]: a = np.array([10, 5, 3, 9, 1])

In [3]: np.where(a > 5)
Out[3]: (array([0, 3]),)

Out[3]長さ 1 のタプルを示していることに注意してください。タプル内の単一のオブジェクトは、インデックスの numpy 配列です。配列を取得するには、タプルから取り出すだけです:

In [4]: np.where(a > 5)[0]
Out[4]: array([0, 3])

あなたのコードでは、あなたの計算をに変更してmissingValueください

missingValue = np.where(checkValue == False)[0]
于 2013-04-21T03:06:12.317 に答える