Хранить данные в массиве из цикла - PullRequest
0 голосов
/ 23 октября 2019

У меня есть два набора данных, которые я хотел бы умножить друг на друга, и сохранить результат в массив для каждого значения.

На данный момент у меня есть это:

import csv
from mpdaf.obj import Spectrum, WaveCoord
import matplotlib.pyplot as plt
import pandas as pd
from csv import reader


file_path = input("Enter full transmission curve path : ")
with open(file_path, 'rw') as f:
    data = list(reader(f, delimiter=","))
    wavelength = [i[0] for i in data]
    percentage = [float(str(i[1]).replace(',','.')) for i in data]

spectrum = input("Full spectrum path : ")
spe = Spectrum(filename=spectrum, ext=0)
data_flux = spe.data

flux_array = []

for i in percentage:
    for j in data_flux:
        flux = i*j
        flux_array.append(flux)

print(flux_array)

Таким образом, это берет первое i, затем умножает его на все j, затем берет следующие i и т. Д. И т. Д. Я хотел бы просто умножить первое i на первое j,затем сохраните значение в массиве, затем умножьте 2-е i на второе j и сохраните значение и т. д. *

1 Ответ

2 голосов
/ 23 октября 2019

Как говорится в сообщении об ошибке: ваши индексы i и j являются числами с плавающей точкой, а не целыми числами. Когда вы пишете for i in percentage:, i принимает каждое значение в списке percentage. Вместо этого вы можете перебирать диапазон. Вот пример, чтобы проиллюстрировать разницу:

percentage = [50.0, 60.0, 70.0]
for i in percentage:
    print(i)
    # 50.0
    # 60.0
    # 70.0

for i in range(len(percentage)):
    print(i)
    # 0
    # 1
    # 2

Чтобы перебрать список индексов, вы, вероятно, захотите перебрать диапазон:

for i in range(len(percentage)):
    for j in range(len(data_flux)):
        flux = percentage[i]*data_flux[j]
        flux_array.append(flux)

Это будет перебирать целые числакаждый список, начиная с 0 и заканчивая максимальным индексом списка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...