使用numpy.where构建它时,为什么我的数组长度为1?

时间:2013-04-21 02:44:51

标签: python arrays numpy

我想使用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个

1 个答案:

答案 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]