Я пытаюсь определить функцию, которая принимает два ввода, инструкции и действия для автомобиля, которые представляют собой списки строк, которые содержат имена открываемых CSV-файлов, содержащих данные (я не могу использовать импорт библиотеки csv).CSV-файлы содержат данные в столбцах в формате;действие, время, скорость.например, N, 10, 10 означает север в течение 10 секунд со скоростью 10 метров в секунду.смещение будет тогда равным 100 на север и т. д.
Скажем, первый файл instr1.csv содержит (без заголовка):
N, 10, 10
E, 10, 8
S, 10, 5
W, 10, 4
В конечном итоге я хочу вернуть вертикальные и горизонтальные смещения для автомобиляа затем общее расстояние в массивах.Я застреваю, пытаясь выяснить, как, когда действие находится на севере, я беру 2-й столбец и 3-й столбец, умножаю их друг на друга, добавляю его в список и затем создаю пустой список для возврата.* Сначала я читаю данные, зацикливаюсь на каждой строке для получения данных, затем создаю структурированный массив (arrayInstructionsFile1) с dtypes.
То, что я получил до сих пор:
import numpy as np
#import matplotlib.pyplot as plt #(plot numpy arrays later)
def car(instructions,actions):
instrucFile = instructions
newArrayFile1 = []
newArrayFile2 = []
lstNorth = []
for file in instrucFile[0:1]: #reads first csv file
with open(file) as filedata: #get data
arrayInstructionsFile1 = np.genfromtxt(file,delimiter=',',dtype=[('action','U1'),('time',float),('speed',float)],encoding=None,usecols=None)
for i in arrayInstructionsFile1: #loops each row to a list
newArrayFile1.append(i)
npArrInstrucDataFile1 = np.array(newArrayFile1) #prints structured array
print('File1 structured array = ',npArrInstrucDataFile1)
, теперь использую функцию, подобную этой:
car(['instr1.csv','instr2.csv'],['act1.csv','act2.csv'])
дает структурированный массив:
File1 structured array = [('N', 10., 10.) ('E', 10., 8.) ('S', 10., 5.) ('W', 10., 4.)]
но я запутался, как мне сказать python поместить значения в новый массив в зависимости от того, является ли действие N, E, S или W, а затем умножить числа с плавающей запятой друг на друга, чтобы я мог вернутьВам нужны массивы?
Как вы можете видеть, я очень борюсь с этим, поэтому любая помощь / руководство или, возможно, даже предложение лучшего подхода будет очень цениться.Я пытался объяснить все, что я пытаюсь сделать, чтобы избежать путаницы, извините, если это немного долго!
Спасибо!