Как использовать массивы строк в Python 3? - PullRequest
1 голос
/ 12 июня 2019

Строки типа Numpy (которые указывают порядковый номер, если применимо, тип данных и количество на единицу) включают «String» параметр 'S', например,'|S20' или 'S20' представляет тип данных фиксированной длины 20- char (в смысле C, т. Е. 20 байтов).

Это String ('S') Тип устарел?

В Python 2 имеет смысл использовать этот тип данных для массивов строк Python фиксированной длины.В Python 3 этот тип numpy теперь соответствует объектам python bytes , и для его перевода в строки python требуется явное кодирование.

Существует ли какой-либо предпочтительный способ хранения строк Python 3 вмассивы numpy?Как теперь длина типа данных соотносится с количеством символов в строке?Хранит ли Unicode-string тип 'U' фиксированное количество символов или оно зависит от того, какие символы хранятся (то есть от того, имеют ли они короткие кодировки)?Есть ли предпочтительный способ конвертировать нудистые строки в строки Python?

1 Ответ

2 голосов
/ 19 июля 2019

В Python 3 numpy просто использует numpy.str_ для представления своих строк в виде юникода.Вам не нужно беспокоиться об этом.Просто относитесь ко всем своим строкам как к str, так как для вас разница между ними невелика.Предпочтительный способ хранения строк - в формате Юникод, а длина типа данных соответствует самой длинной строке в вашем массиве.Эта длина фиксирована, и поэтому любое изменение массива будет обрезать более длинные строки до этого фиксированного размера.numpy позаботится о выполнении всех преобразований в случае необходимости.

print(type(np.asarray(['abc','xyz'])[0]))
print(type(np.asarray(['abc','xyz']).tolist()[0]))
<class 'numpy.str_'>
<class 'str'>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...