【问题标题】:Manipulate two cols from csv file操作 csv 文件中的两列
【发布时间】:2017-10-05 00:12:25
【问题描述】:

首先,让我告诉你,我花了将近 1 个小时测试了很多可能来自 SO 的相关问题,但没有成功。这对我来说很复杂(初学者)。如果我按数字输入数字,我会更早完成。但我们的想法是永远学习。所以我想了解。

考虑以下示例:

>>> np.random.rand(3,2)
array([[ 0.14022471,  0.96360618],
       [ 0.37601032,  0.25528411],
       [ 0.49313049,  0.94909878]])

这是我需要与一些 Voronoi 代码一起使用的对象。但我的数据来自一个 csv 文件。

我有一个带有标题的 csv 文件,我需要列 clatclong。我想获得这样的输出:

array([[ clat_1,  clong_1],
       [ clat_2,  clong_2],
                ...
       [ clat_N,  clong_N]])

这样print 的输出将是这样的:

[[ 0.19151945  0.62210877]
 [ 0.43772774  0.78535858]
 [ 0.77997581  0.27259261]
 [ 0.39720258  0.78873014]
 [ 0.31683612  0.56809865]]

我加载了 csv 文件

csv_file='./demog.csv'
demog = np.genfromtxt(csv_file, delimiter=',', skip_header=0, skip_footer=0, names=True,dtype=None)

在我尝试了clat=demog['clat']clong=demog['clong']print clat 看起来不是一个列之后。

如何创建这样的N x 2对象(我什至不知道它的名字:数组、列表、矩阵、表格……)

【问题讨论】:

    标签: arrays python-2.7 csv


    【解决方案1】:

    clat 将为您提供整个 lat 列,而 clong 将为您提供整个 long 列。要将它们放在一个数组中,就像您提到的 [lat, long] 对,您可以使用 zip:

    array = []
    
    for lat, long in zip(clat, clong):
        array.append([lat, long])
    
    array = np.array(array)
    print array
    

    【讨论】:

    • 来自 csv 的数字(例如 -16.203697)已扩展(到 -16.203696999999998)。如何保持相同的精度?此外,打印输出不像我上面发布的那样(可能是因为数字?)。
    • 另外,我的 Voronoi 代码返回了 plt.plot(points[:,0], points[:,1], 'ko') TypeError: list indices must be integers, not tuplepointsarray
    • 我将您的代码与points=np.array(points) 一起使用以获得所需的输出。如果你编辑我可以接受。谢谢。
    • array.append(list([lat, long]))array=np.array(array)
    • 我明白你在说什么。 np.array 为您在每行打印一个新的纬度/经度对。凉爽的。编辑了上面的答案。
    猜你喜欢
    • 2013-03-28
    • 1970-01-01
    • 2018-11-04
    • 2021-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    相关资源
    最近更新 更多