2016-04-09 3 views
0

У меня есть NumPy матрица X, и я попытался изменить тип данных столбца 1, используя код ниже:питон NumPy: Изменить тип столбца для Numpy матрицы

X[:, 1].astype('str') 
print(type(X[0, 1])) 

, но я получил следующий результат:

<type 'numpy.float64'> 

Кто-нибудь знает, почему тип не был изменен на str? И какой правильный способ изменить тип столбца X? Спасибо!

+1

ndarray.astype не выполняет на месте. И вы не можете изменить тип одного столбца массива. Если вы хотите иметь массив со смешанным типом, вы должны использовать [структурированный тип] (http://docs.scipy.org/doc/numpy-1.10.1/user/basics.rec.html) –

ответ

2

Предоставление простого примера объяснит это лучше.

>>> a = np.array([[1,2,3],[4,5,6]]) 
array([[1, 2, 3], 
     [4, 5, 6]]) 
>>> a[:,1] 
array([2, 5]) 
>>> a[:,1].astype('str') # This generates copy and then cast. 
array(['2', '5'], dtype='<U21') 
>>> a     # So the original array did not change. 
array([[1, 2, 3], 
     [4, 5, 6]]) 
Смежные вопросы