使用迭代器在python中对数组求和

And*_*ndy 2 python csv arrays numpy

我在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'
Run Code Online (Sandbox Code Playgroud)

打印出以下内容:

[['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']
Run Code Online (Sandbox Code Playgroud)

所以第一列属于'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])
Run Code Online (Sandbox Code Playgroud)

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

ato*_*3ls 5

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

data = np.genfromtxt('1250_12.csv', delimiter = ',', skip_header=1)
Run Code Online (Sandbox Code Playgroud)

然后

np.sum(data,axis=0)
Run Code Online (Sandbox Code Playgroud)

  • @Andy这个答案会给你一个更高的性能,因为它避免了`for`循环...... (2认同)