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]

这只会打印一个值,但数组实际上有 10

4

1 回答 1

3

numpy.where总是返回一个数组元组,即使参数是一维的。它为每个维度返回一个数组。

例如:

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 回答