Я новичок в python и пытаюсь выяснить, как петлю над матрицей 2x2.Как петля над 2D-матрицей с условием
Моя начальная точка - это *. 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)
Теперь я хочу, чтобы петли по второй колонке - Дата; это проявляется в определенном смысле, это называется «Julian Day», например, значения 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 –