2017-07-28 33 views
1

元素表示對x和y的十進制度與格式化爲串相應的x和y座標之間的空間中的座標:迭代字符串創建緯度龍的座標數組列表的

'34.894127 29.761515', '32.323574 30.166336', '32.677296 31.961439', '35.298668 31.559237', '34.894127 29.761515

迄今爲止我可以挑選出的第一個元素,並將其設置爲x值:

x = mystring[0:mystring.find(' ')]

如何可以遍歷這個串,使陣列由對x和y的從該座標串?

+1

米奇的解決方案是好的,但如果'tuple'是你真的希望,這會更好: '[元組(圖(浮動,coord.split()))的字符串座標]' –

回答

3

哪裏mystring = mystring = "'34.894127 29.761515', '32.323574 30.166336', '32.677296 31.961439', '35.298668 31.559237', '34.894127 29.761515"你可以得到對的列表,像這樣:

x = [pair.lstrip().strip("'").split(' ') for pair in mystring.split(',')] 
# gives: [['34.894127', '29.761515'], ['32.323574', '30.166336'], ['32.677296', '31.961439'], ['35.298668', '31.559237'], ['34.894127', '29.761515']] 

,或者如果你真的想要的元組:

x = tuple([tuple(pair.lstrip().strip("'").split(' ')) for pair in mystring.split(',')]) 
# gives: (('34.894127', '29.761515'), ('32.323574', '30.166336'), ('32.677296', '31.961439'), ('35.298668', '31.559237'), ('34.894127', '29.761515')) 
1

您可以使用split(',')讓每個字符串,然後split()得到座標,例如使用列表理解:

mystring = "'34.894127 29.761515', '32.323574 30.166336', '32.677296 31.961439', '35.298668 31.559237', '34.894127 29.761515'" 
coordinates = [tuple(map(float, x.replace("'", '').split())) for x in mystring.split(',')] 

輸出:

[(34.894127, 29.761515), (32.323574, 30.166336), (32.677296, 31.961439), (35.298668, 31.559237), (34.894127, 29.761515)] 
1

爲了得到一個numpy的陣列出來的串列表的:

import numpy as np 

string = ['34.894127 29.761515', '32.323574 30.166336', '32.677296 31.961439', 
      '35.298668 31.559237', '34.894127 29.761515'] 

s = np.array(list(map(lambda x: x.split(" "), string))).astype(float) 

這導致s使用np.matrix

[[ 34.894127 29.761515] 
[ 32.323574 30.166336] 
[ 32.677296 31.961439] 
[ 35.298668 31.559237] 
[ 34.894127 29.761515]] 
+0

這*完全*我所需要的!非常感謝! – oncontour

+0

太好了。您現在可能想要閱讀[當某人回答時該怎麼辦](https://stackoverflow.com/help/someone-answers)。你處於一個非常舒適的位置,對你的問題有4個答案。所以你可能會贊成任何一個有用的,並接受其中之一,這是最適合你的需求。 – ImportanceOfBeingErnest

+0

謝謝你的介紹!我很高興能夠與所有構成這項驚人成就的人一起學習併爲之作出貢獻! (儘管在達到15次展示之前,我無法讓任何人贊成 – oncontour

3

的快速方法與字符串作爲輸入:

如果data是一個字符串,則將其解釋爲包含逗號或空格分隔列的矩陣,以及分隔行的分號。

string = ['34.894127 29.761515', '32.323574 30.166336', '32.677296 31.961439', 
      '35.298668 31.559237', '34.894127 29.761515'] 

np.matrix(';'.join(string)) 
#matrix([[ 34.894127, 29.761515], 
#  [ 32.323574, 30.166336], 
#  [ 32.677296, 31.961439], 
#  [ 35.298668, 31.559237], 
#  [ 34.894127, 29.761515]]) 

string = "'34.894127 29.761515', '32.323574 30.166336', '32.677296 31.961439', '35.298668 31.559237', '34.894127 29.761515" 

np.matrix(string.replace(',', ';')) 
#matrix([[ 34.894127, 29.761515], 
#  [ 32.323574, 30.166336], 
#  [ 32.677296, 31.961439], 
#  [ 35.298668, 31.559237], 
#  [ 34.894127, 29.761515]])