我想使用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]
这只打印一个值,但数组实际上有10个
答案 0 :(得分:3)
numpy.where
总是返回数组的元组,即使参数是1-D也是如此。它为每个维度返回一个数组。
例如:
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]