Python NumPy加载文本模式
我对NumPy和Python有点陌生。我有如下格式的字符串文本:Python NumPy加载文本模式,python,arrays,string,numpy,Python,Arrays,String,Numpy,我对NumPy和Python有点陌生。我有如下格式的字符串文本: lat0 37.792480, lon0 -122.397450 lat1 39.792480, lon1 -132.397450 我想将唯一的浮点数作为2d数组加载到数组中,第0列作为lat,第1列作为lan。这种数据加载的模式应该是什么。既然您提到了numpy,这是一种方式: import numpy as np lst = ['lat0 37.792480, lon0 -122.397450', 'lat
lat0 37.792480, lon0 -122.397450
lat1 39.792480, lon1 -132.397450
我想将唯一的浮点数作为2d数组加载到数组中,第0列作为lat,第1列作为lan。这种数据加载的模式应该是什么。既然您提到了
numpy
,这是一种方式:
import numpy as np
lst = ['lat0 37.792480, lon0 -122.397450',
'lat1 39.792480, lon1 -132.397450']
res = np.array([[i.rsplit(None, 1)[-1] for i in x.split(',')] for x in lst]).astype(float)
# array([[ 37.79248, -122.39745],
# [ 39.79248, -132.39745]])
如果您有类似的字符串
mytext.txt
lat0 37.792480,lon0-122.397450
lat1 39.792480,lon1-132.397450
您可以将文本文件中的输入读取到python程序run.py
中,就像python run.py
您还可以像python一样打开和读取文本文件
with open('mytext.txt') as f:
text = f.readlines()
因为我最近一直在使用Python3的input(),所以我将解释如何使用该选项
但是,您需要知道mytext.txt中的行数,因为input()是逐行输入的
显然,在unix中,您可以为#行运行wc-l
import numpy as np
coordinates = np.zeros([numlines, numlines]) # Instantiate array.
for i in range(numlines):
data = input() # How we can read text from standard input.
data = data.split(',') # Split by comma, giving ['latN float1', ' lonN float2']
lat = data[0].split()[1] # Isolate 'latN float1', split by ' ', get 'float1'.
lon = data[1].split()[1] # Isolate 'lonN float2', split by ' ', get 'float2'.
lat = float(lat) # Convert from string to float.
lon = float(lon) # Convert from string to float.
coordinates[i] = lat, lon # Replace zeros with lat, lon
您将拥有一个numpy阵列:
数组([[lat0,lon0],[lat1,lon1],[latN,lonN]])谢谢,我没有想到这种方法,我是朝着np.loadtxt的方向想的