numpy.where返回空索引

时间:2018-10-02 18:15:29

标签: python-2.7 numpy

因此,我尝试使用numpy创建两个数组。一个数组比另一个数组大很多,因此我想搜索大数组以查看小数组中每个元素的位置(即什么索引)。但是,当我运行下面的代码时,找不到小数组中的元素之一,我不确定为什么。数据类型不匹配吗?

请告知,谢谢!

import matplotlib.pyplot as plt
import numpy as np

GMean = np.array([4.23, 4.93, 5.67, 6.62, 4.67])
conc_x = np.arange(0.0, 90, 0.1)
GMean = np.round(GMean, decimals=1)
for i in np.nditer(GMean):
    spec_index = np.where(conc_x==i) #look for index in conc_x data set where our GMean data point lies
    print i
    print spec_index

console output:
4.2
(array([42]),)
4.9
(array([49]),)
5.7
(array([57]),)
6.6
(array([], dtype=int32),) #why can it not find the index here?
4.7
(array([47]),)

1 个答案:

答案 0 :(得分:0)

因此,使用numpy.around()代替numpy.round()是可行的。我每次都会得到一个索引。 我以为它们是相同的,但是在查看文档时,有细微的差别:

“将数组舍入到给定的小数位数。”

vs:

“甚至舍入到给定的小数位数。”

所以我想“均匀舍入”意味着它会将所有尾随的数字舍入到所需的小数之后,因此,您要比较的两个数字变得完全相同。

希望这是有道理的。