Ограничение числовых цифр в Python - PullRequest
2 голосов
/ 08 января 2012

Я хочу поместить числа и строки в один и тот же массив numpy. Тем не менее, я очень редко (сложно копировать, но иногда) сталкиваюсь с ошибкой, когда преобразование чисел в строки приводит к значению, которое не может быть переведено обратно в десятичную форму (т. Е. Я получаю «9.8267567e», а не «9.8267567»). е-5 "в массиве). Это вызывает проблемы после записи файлов. Вот пример того, что я делаю (хотя и в гораздо меньшем масштабе):

import numpy as np
x = np.array(.94749128494582)
y = np.array(x, dtype='|S100')

Насколько я понимаю, это должно позволять 100 строковых символов, но иногда я вижу обрез после ~ 10. Есть ли другой тип, который я должен назначить, или способ ограничить количество символов в моем массиве (x)?

1 Ответ

1 голос
/ 25 января 2012

Прежде всего, x = np.array(.94749128494582) может не делать то, что вы думаете, потому что аргумент, передаваемый в np.array, должен быть какой-то последовательностью или чем-то с интерфейсом массива. Возможно, вы имели в виду x = np.array([.94749128494582])?

Теперь, для правильного сохранения строк, вы можете решить эту проблему, используя

y = np.array(x, dtype=object)

Однако, как Джо упомянул в своем комментарии, это не очень глупо, и вы также можете использовать простые старые списки Python.

Я бы рекомендовал внимательно изучить, почему у вас, похоже, есть требование хранить строки и числа в одном и том же массиве, мне кажется, что вы настроили несоответствующие структуры данных и могли бы выиграть от редизайна / рефакторинга. numpy массивы предназначены для быстрых числовых операций, они не очень подходят для использования со строками или в качестве хранилища / базы данных.

...