numpy.where возвращает пустой индекс - PullRequest
0 голосов
/ 02 октября 2018

Итак, я пытаюсь создать два массива, используя 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 голосов
/ 04 октября 2018

Так что использование numpy.around() вместо numpy.round() работает.Я получаю индекс каждый раз.Я думал, что они одинаковы, но, глядя на документацию, есть небольшая разница:

"Округлить массив до заданного числа десятичных знаков."

vs:

«Равномерно округлить до заданного числа десятичных знаков».

Поэтому я думаю, что «равномерно округлить» означает, что он округляет все конечные цифры за пределы желаемого десятичного знака, и поэтому оба сравниваемых числа становятся абсолютно одинаковыми..

Надеюсь, это имеет смысл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...