Ответ 1
См. документацию dtypes
.
Строки |S1
и |S2
- это дескрипторы типа данных; первый означает, что массив содержит строки длиной 1, второй длины 2. Символ |
pipe - это флаг
У меня есть два массива строк:
In [51]: r['Z']
Out[51]:
array(['0', '0', '0', ..., '0', '0', '0'],
dtype='|S1')
In [52]: r['Y']
Out[52]:
array(['X0', 'X0', 'X0', ..., 'X0', 'X1', 'X1'],
dtype='|S2')
В чем разница между S1 и S2? Это просто, что они содержат записи разной длины?
Что делать, если мои массивы имеют строки разных длин?
Где я могу найти список всех возможных типов и что они означают?
См. документацию dtypes
.
Строки |S1
и |S2
- это дескрипторы типа данных; первый означает, что массив содержит строки длиной 1, второй длины 2. Символ |
pipe - это флаг
Для списка попробуйте следующее:
http://docs.scipy.org/doc/numpy/reference/arrays.dtypes.html
Примеры:
http://docs.scipy.org/doc/numpy/reference/generated/numpy.dtype.html
|S25
означает строку длиной 25.
Для хранения строк переменной длины в массиве numpy вы можете сохранить их как объекты python. Например:
In [456]: x=np.array(('abagd','ds','asdfasdf'),dtype=np.object_)
In [457]: x[0]
Out[457]: 'abagd'
In [459]: map(len,x)
Out[459]: [5, 2, 8]
In [460]: x[1]=='ds'
Out[460]: True
In [461]: x
Out[461]: array([abagd, ds, asdfasdf], dtype=object)
In [462]: str(x)
Out[462]: '[abagd ds asdfasdf]'
In [463]: x.tolist()
Out[463]: ['abagd', 'ds', 'asdfasdf']
In [464]: map(type,x)
Out[464]: [str, str, str]