我有一个csv文件,导入到一个2D numpy数组中(它本来有浮点数和整数在单独的列中).我打算将数组的每组N
行的值相加形成新数组的单行.我只能想到在嵌套循环中分别添加每行和列的值,那么有没有其他更好的numpy方法来做到这一点?这是我开始的,但似乎太笨拙了
def read_results(N, t_eval):
solution_cells = pd.read_csv("battery_solution_6.csv").to_numpy() # This makes the array uniformly as float
solution_battery = [None]
for t in t_eval:
solution_t = [None] # Sum of all cell results in one for particular t
for i in range(N):
solution_t += solution_cells[t*N+i,:] # Need to implement another layer of loop for summing each column value for each row
solution_battery.append(solution_t)
# t*N+i to get a group of N rows together for the summing, appending to a final array for the summed results
基本上,我有这样的东西:
t i x y z
0 0 1 2 3
0 1 1 2 3
0 2 1 2 3
1 0 1 2 3
1 1 1 2 3
1 2 1 2 3
2 0 1 2 3
2 1 1 2 3
2 2 1 2 3
...
其中i is in range(N)
,因此需要将每组N
行相加以得到电池。(当然,所有x、y、z值都不同)这需要“相加”以得到:
t x y z
0 3 6 9
1 3 6 9
2 3 6 9
其中不需要i
,因为数据全部求和。
1条答案
按热度按时间wqsoz72f1#
假设
t
列表示记录组:你可以很容易地处理Pandasdf.groupby
,并对各组的值求和: