2016-05-22 4 views
2

У меня есть два массива с объектами даты и времени, но мне нужен только один комбинированный массив с датой первого и временем второго .. Если я используюКак объединить два массива datetime в одном массиве datetime?

datetime.combine(date,time)

результат

TypeError: combine() argument 1 must be datetime.date, not numpy.ndarray

код:

import numpy as np 
import matplotlib.pyplot as pp 
import math 
from datetime import datetime, time, date 
from glob import glob 
import pylab as plb 
from scipy.optimize import curve_fit 
from scipy import asarray as ar,exp 
#importo i nomi dei files 

fnames=glob('C:/Users/asus/Desktop/lab_astro/GALASSIA/galassia canale 43/*') 
#conto i files per ogni tipo e inizializzo le variabili dove mettere i dati 
num_file14=len(fnames) 
signal14=[] 
dt = datetime 
dd = datetime 


#leggo i files e riempio le variabiliChange working directory.. 
for n in range (0, num_file14): 
    data14=np.loadtxt(fnames[n], comments ='END', delimiter=';', skiprows=1, usecols=(0,1,7),dtype=object,converters={ 0: lambda x: dd.strptime(x, "%d/%m/%Y"),1: lambda x: dt.strptime(x, "%H.%M.%S") , 7: np.float}) 
    dd=np.append(orario,data14[:,0]) 
    dt=np.append(orario,data14[:,1]) 
    d = datetime.combine(dd,dt) 
    signal14=np.append(signal14,data14[:,2]) 

Maby мой вопрос наивный, я новичок в Python, но мне очень нужна эта программа для работы ... спасибо за ваш он LP !!

+1

Проверьте это http://stackoverflow.com/a/7501549/524743 – Samuel

+0

Можете ли вы предоставить значения od 'dd' и' dt'. Я думаю, что нужно преобразовать формат 'datetime'. –

ответ

2

Ваши переменные dd и dt находятся в формате numpy.ndarray. Необходимо преобразовать формат datetime. Посмотрите на работы по datetime.combine(date,time)

In [1]: import datetime 
In [2]: time = datetime.time(12,12,12) 
In [3]: date = datetime.date(2015,1,04) 
In [4]: datetime.datetime.combine(date,time) 
Out[1]: datetime.datetime(2015, 1, 4, 12, 12, 12) 

Я надеюсь, что dd представляют для date и dt представляют для time. Таким образом, ваш код изменился так.

datetime.datetime.combine(dd.date(),dt.time()) 

Если вы используете итерацию. Вы должны изменить код в соответствии с итерацией

+0

thakyou, я вижу .. теперь преобразование - моя проблема! dd выглядит так: Out [112]: массив ([<тип 'datetime.datetime'>, datetime.datetime (2016, 5, 16, 0, 0), datetime.datetime (2016, 5, 16, 0 , 0), ..., datetime.datetime (2016, 5, 16, 0, 0), datetime.datetime (2016, 5, 16, 0, 0), datetime.datetime (2016, 5, 16 , 0, 0)], dtype = object) – ADHAFERA

+0

Пожалуйста, используйте форматирование кода и в комментарии. Трудно читать. –

+0

Я думаю, что это 'numpy.ndarray' с элементами переменных' datetime'. Таким образом, вы можете выполнить итерацию и использовать 'datetime.combine (date, time)'. –