Какой dtype будет правильным, чтобы numpy.arange () не получил неправильную длину? - PullRequest
1 голос
/ 17 июня 2019

Я пытаюсь получить переменный массив, содержащий 200 значений в диапазоне с разностью 40.

Поэтому я использую numpy.arange(a, b, 0.2) с начальными значениями a=0 и b=40 и идет вверх (a=0.2 b=40.2, a=0.4 b=40.4 и т. Д.)

Когда ядостичь numpy.arange(25.4, 65.4, 0.2) однако я неожиданно получаю массив длиной 201 значения:

x = numpy.arange(25.2, 65.2, 0.2)
print(len(x))

Возвращает 200

x = numpy.arange(25.4, 65.4, 0.2)
print(len(x))

Возвращает 201

Я так далеко заметил, что это происходит, вероятно, из-за проблем с округлением из-за типа данных ...

Я знаю, что есть опция 'dtype' вnumpy.arrange():

numpy.arange(star, stop, step, dtype)

Вопрос в том, какой тип данных подходит для этой проблемы и почему?(Я не настолько уверен в типах данных jet и https://docs.scipy.org/doc/numpy/reference/generated/numpy.dtype.html#numpy.dtype не помог мне решить эту проблему. Пожалуйста, помогите!

1 Ответ

1 голос
/ 17 июня 2019

np.arange наиболее полезен, когда вы хотите точно контролировать разницу между соседними элементами . np.linspace, с другой стороны, дает вам точный контроль над общим количеством элементов . Звучит так, как будто вы хотите использовать np.linspace вместо:

import numpy as np

offset = 25.4

x = np.linspace(offset, offset + 40, 200)

print(x)
print(len(x))

Вот страница документации для np.linspace: https://docs.scipy.org/doc/numpy/reference/generated/numpy.linspace.html

...