Как построить этот простой вектор за NumPy - PullRequest
2 голосов
/ 28 мая 2020

Я новичок в Python, и я хочу создать массив, в котором 0,00 имеет первый элемент, а затем добавляет 0,01 для его следующих элементов, пока последний не станет меньше или равен заданному числу (в моем случае 0.55).

В Matlab код для этого будет (0: 0.01: 0.55)

И результат будет: [0.00, 0.01, 0.02, ... , 0.55]

Теперь, конечно, я думаю, что это можно сделать очень легко в Python с al oop, но мне интересно, есть ли прямой способ добиться этого с помощью функции NumPy

Я пробовал диапазон, но не смог, возможно, это не тот .

Спасибо

Ответы [ 2 ]

5 голосов
/ 28 мая 2020

будет go с

np.arange(0, 0.555, 0.01)

просто заглянул в документацию numpy:

Конец интервала. Интервал не включает это значение, за исключением некоторых случаев, когда шаг не является целым числом, а округление с плавающей запятой влияет на длину вывода. numpy -docs

, поэтому странное поведение вызвано некоторой проблемой округления с плавающей запятой. См. https://en.wikipedia.org/wiki/Floating-point_arithmetic#Accuracy_problems для получения дополнительной информации.

1 голос
/ 28 мая 2020

Как упоминал Милан, моей первой мыслью было использовать np.arange(0, 0.55, 0.01), но я просто запустил его, и он меняется только от 0 до 0,54, что заставило меня подумать, что конечная точка рассматривается как исключительная. С этой целью я увеличил его до np.arange(0, 0.56, 0.01), но затем вернул все до 0,56.

Честно говоря, я не уверен, почему это происходит (может быть, ошибка?), Поэтому вот альтернатива, которая достигает того же результата с помощью np.linspace ()

np.linspace(0, 0.55, 56)

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