python & numpy: заставить матрицу содержать значения, которые, как известно, варьируются от x до y? - PullRequest
0 голосов
/ 18 июля 2011

Я использую numpy для создания прототипа математического кода.Моя математика содержит только вероятности, по которым я выполняю матричную арифметику (умножение, функция точки в numpy).Поскольку я знаю, что все значения находятся в диапазоне от 0 до 1, мне интересно, могу ли я принудительно заставить numpy кодировать значения (экономя память или повысить точность) на 32/64-битной, но начиная с верхней границы, установленной на 1?

try1 = numpy.array([1.0,0.2564654646546],dtype='f16')

Может ли dtype быть в диапазоне от x до y с тем же объемом памяти на значение?

Ответы [ 2 ]

1 голос
/ 13 августа 2013

Полагаю, в настоящее время вы можете достичь этого с помощью:

a = np.linspace(0, 1, number_of_points)
1 голос
/ 21 июля 2011

Насколько я знаю, массивы numpy не поддерживают арифметику с фиксированной запятой, и я не слышал о планах по ее добавлению. Если вы заинтересованы в игре с этим материалом, вы можете проверить набор инструментов fixed-pt от matlab, или, если вы действительно любите математику, вы можете готовить самостоятельно, используя целочисленные типы данных и отслеживая «точку».

Способ работы с плавающей запятой уже довольно изящен, хотя я не уверен, что вы получите кучу точности на бит, просто зная, что числа в [0,1]. Плавающая точка похожа на научную нотацию: увеличение числа битов дает в основном более «значащие цифры», а не (просто) больший диапазон чисел.

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