2

我在 python 中使用 Numpy 来读取 csv 文件:

import numpy as np
import csv
from StringIO import StringIO
with open ('1250_12.csv','rb') as csvfile:
    data = np.genfromtxt(csvfile, dtype = None, delimiter = ',')
np.set_printoptions(threshold='nan'

打印出以下内容:

[['x1' 'y1' 'z1' 'x2' 'y2' 'z2' 'cost']
 ['5720.44' '3070.94' '2642.19' '5797.82' '3061.01' '2576.29' '102.12']
 ['5720.44' '3070.94' '2642.19' '5809.75' '3023.6' '2597.81' '110.4']
 ['5861.54' '3029.08' '2742.36' '5981.23' '3021.52' '2720.47' '121.92']
 ['5861.54' '3029.08' '2742.36' '5955.36' '3012.95' '2686.28' '110.49']

所以第一列属于'x1',第二列属于'x2'......等等。假设 x1,y1,z1 是一个以数组表示的向量,下面的点表示该值。如您所见,每个 x1、y1 等都有多个点。现在我想将这些点相加,使其成为使用迭代器的向量的总和。我如何使用迭代器来总结所有行?

像这样:

import numpy
a=numpy.array([0,1,2])
b=numpy.array([3,4,5])
a+b
array([3, 5, 7])

但这只是 2 个数组,如果有数百个数组,那么您需要一个迭代器而不是手动设置数组吗?

4

3 回答 3

5

为什么不导入跳过第一行?

data = np.genfromtxt('1250_12.csv', delimiter = ',', skip_header=1)

然后

np.sum(data,axis=0)
于 2013-08-02T16:35:48.440 回答
1

正如其他人所评论的那样,可能有一些方法可以使用内置函数来执行此操作,但以下执行如您所描述的:

sum = np.zeros(len(data[0]))

for vector in data[1:]:
    vector = map(float, vector)
    sum = np.add(vector, sum)

首先,我们初始化一个sum等于数据矩阵宽度的空白向量。然后,我们遍历实际的数据向量并将它们相加。

于 2013-08-02T16:32:44.910 回答
0

如果你想在 python 中执行此操作,其中一种方法可以是迭代列表让我们假设输入,即数组列表是 inp,输出数组总共存储

total = inp[1]
for eachRow in inp[2:]:
    for index, val in enumerate(eachRow):
        total[index] += eachRow[index]

希望这可以帮助 :)

于 2013-08-02T16:49:16.880 回答