我是python的新手,並試圖弄清楚如何遍歷2x2矩陣。如何在條件下循環二維矩陣
我的起點是一個* .csv文件,其中包含大量數據(10列173828行)。因爲我只需要第一列(sigma_0值)和第六列(日期),我做了一個叫sigma_JD矩陣,其中只包含這兩列:
import csv
import numpy as np
with open("C:/Users/.../03971822.csv") as input_file:
reader = csv.reader(input_file)
array = []
for row in reader:
array.append(row)
matrix = np.asmatrix(array)
idx_IN_columns = [0, 5]
sigma_JD = matrix[:, idx_IN_columns]
print(sigma_JD)
print("size sigma_JD: ", np.shape(sigma_JD))
>>> print(sigma_JD)
[['-12.42' '2451544.576']
['-12.92' '2451544.576']
['-12.45' '2451544.576']
...,
['-11.66' '2454688.389']
['-12.61' '2454688.389']
['-11.72' '2454688.389']]
>>> print("size sigma_JD: ", np.shape(sigma_JD))
size sigma_JD: (173828, 2)
現在我想遍歷第二列 - 日期;它是在一個特定的方式顯示,這就是所謂的「儒略日」,例如JD值
2451544,5 = 01/January/2000 0:00 2451545,5 = 02/January/2000 0:00 2451546,5 = 03/January/2000 0:00
的2451544講述了日/月/年,小數位報時。
我想編寫一個代碼,其中考慮了所有sigma_0值,這些值都在一天之內。所以,循環應該使用特定的值,而不是通過索引。
它應該從2451544,5開始,然後考慮所有在一天之內的sigma_0值(並將其總結),然後轉到第二天2451544,5並執行相同的操作。 。
我試過s.th.這樣,但它不工作
x = 2451544.5
y = x + 1
for i in sigma_JD[:, 1]:
while x < y:
print(sigma_JD[i, 1])
break
然後我想到了創建我自己的功能,但沒得這麼遠:
def select(x):
count = 2451544.5
select = []
for i in range(0, len(x[:, 1])): # loop over Julian Day
if count < count + 1:
row = []
for j in range(0, len(x[:, 0])): # loop over sigma_0 values
# take all sigma_0 values and sum it up
count += 1
return select
這將是非常,非常好的,如果有人可以幫我。我在這方面工作了好幾天,真的讓我感到很難過,我不知道該怎麼做。
非常感謝。
你可以考慮使用對大熊貓這個任務。它在底層使用numpy,但它允許您讀取csv,將datetime列轉換爲日期,並提供簡單的使用groupby函數。 http://pandas.pydata.org/pandas-docs/stable/index.html –