2016-10-26 2 views
2

я написал следующий скрипт для загрузки данных из CSV-файла в Numpy виде массива:Преобразование элементов в Numpy массив в строку

import numpy 

sample = numpy.genfromtxt('sample_cor.csv', delimiter = ',') 
print sample 

и этот образец выглядел как:

[[ 259463.392 2737830.062 ] 
[ 255791.4823 2742050.772 ] 
[ 249552.4949 2746152.328 ] 
[ 247925.1228 2746422.143 ] 
[ 262030.4697 2728966.229 ] 
[ 260462.1936 2731412.856 ] 
[ 260644.0281 2735003.027 ] 
[ 268588.7974 2732835.097 ]] 

прямо сейчас Я хочу извлечь каждую строку из этого массива в строку с запятой, например, я ожидал, что строка 1 будет преобразована в 259463.392,2737830.062, строка 2 будет 255791.4823,2742050.772 и т. Д.

Я попытался код ниже:

ss = numpy.array_str(sample[0]) 
print ss 
print type(ss) 

и получил результат, может быть, не то, что я хочу,

[ 259463.392 2737830.062] 
<type 'str'> 

(я использовал coords = '259467.2,2737833.87' и получил форму строки, которая была то, что я хочу: 259467.2,2737833.87)

Как преобразовать элементы в массив numpy в строку с запятой?

+1

Форма без ',' это просто нормальный способ, которые отображаются 'numpy' массивы. Это помогает отличить их от списков Python. '' 'Не является неотъемлемой частью списка или массива. Это просто функция отображения. – hpaulj

ответ

4

Вот подход, использующий join method -

[",".join(item) for item in a.astype(str)] 

Sample пробег -

In [141]: a 
Out[141]: 
array([[ 259463.392 , 2737830.062 ], 
     [ 255791.4823, 2742050.772 ], 
     [ 249552.4949, 2746152.328 ], 
     [ 247925.1228, 2746422.143 ], 
     [ 262030.4697, 2728966.229 ], 
     [ 260462.1936, 2731412.856 ], 
     [ 260644.0281, 2735003.027 ], 
     [ 268588.7974, 2732835.097 ]]) 

In [142]: [",".join(item) for item in a.astype(str)] 
Out[142]: 
['259463.392,2737830.062', 
'255791.4823,2742050.772', 
'249552.4949,2746152.328', 
'247925.1228,2746422.143', 
'262030.4697,2728966.229', 
'260462.1936,2731412.856', 
'260644.0281,2735003.027', 
'268588.7974,2732835.097'] 
+0

благодарю вас за совет, но у меня есть маленький вопрос, почему почему показ моего массива numpy в сообщении отсутствует запятая? – Heinz

+0

@Heinz Хмм, если входной массив NumPy, он должен. Или вы можете попробовать 'print (repr (a))'. – Divakar

+0

Спасибо, repr() возвращает массив с запятой. – Heinz

Смежные вопросы