【发布时间】:2014-12-07 17:33:52
【问题描述】:
我的矩形地理坐标表示为 numpy ndarray,如下所示: (每一行对应一个矩形,每一列包含它的左下角和右上角的经纬度)
数组([
[ 116.17265886, 39.92265886, 116.1761427 , 39.92536232], [ 116.20749721, 39.90373467, 116.21098105, 39.90643813], [ 116.21794872, 39.90373467, 116.22143255, 39.90643813]])
我想调用一个坐标转换 API,它的输入是这样的字符串:
'lon_0,lat_0;lon_1,lat_1;lon_2,lat_2;...;lon_n,lat_n'
所以我编写了一个愚蠢的迭代来将我的 ndarray 转换为所需的字符串,如下所示:
coords = ''
for i in range(0, my_rectangle.shape[0]):
coords = coords + '{left_lon},{left_lat};{right_lon},{rigth_lat}'.format(left_lon = my_rectangle[i][0], left_lat = my_rectangle[i][1], \
right_lon = my_rectangle[i][2], rigth_lat = my_rectangle[i][3])
if i != my_rectangle.shape[0] - 1:
coords = coords + ';'
输出是这样的:
116.1722658863299888639.925323188,216.21798048,39.903738188,216.207497213,39.9037381271,216.21798048,39.903738127139.906438127139.90373818,39.9037346711,219.903734671,39.9037346718,39。
我想知道是否存在一种更智能、更快速的方法来实现这一点而无需迭代(或一些我可以参考的有用文档)?
【问题讨论】:
-
你也可以这样做:
coords = ';'.join(','.join((i, j)) for i,j in my_rectangle.astype(str).reshape(-1, 2)) -
它有效~~谢谢你:)
标签: python string numpy multidimensional-array