我有尺寸(95,)的时间数据。我编写了以下代码来提取年,月和日以创建维度数组(95,3)。但是,以下代码能够创建维度数组(285,)。如何使用维度(95,3)创建新的时间数组,其中第一列表示年份,第二列表示月份,最后一列表示当天。
newtime = np.array([])
for i in range(len(time)):
a = seconds_since_jan_1_1993_to_datetime(time[i])
time_year = float(a.strftime("%Y"))
time_mon = float(a.strftime("%m"))
time_day = float(a.strftime("%d"))
newtime = np.append(newtime, np.array([time_year, time_mon, time_day]))
例如,我有一个带元素数组的输入数组([725696054.99044609,725696056.99082708,725696058.99119401,...])
我想要以下形式的输出:
Col1 Col2 Col3
2015.0 12.0 31.0
2015.0 12.0 31.0
2015.0 12.0 31.0
期待您的建议或帮助。
答案 0 :(得分:0)
我的建议是采用数据帧格式。
您的代码可以轻松修复:
newtime = pd.DataFrame([], columns=['year','month','day'])
for i in range(len(time)):
a = seconds_since_jan_1_1993_to_datetime(time[i])
time_year = float(a.strftime("%Y"))
time_mon = float(a.strftime("%m"))
time_day = float(a.strftime("%d"))
newtime.loc[len(newtime)] = [time_year, time_mon, time_day]
希望有所帮助!
答案 1 :(得分:0)
数据框是一个不错的选择。但是,如果要保留数组,只需使用numpy的reshape()函数即可。这是一个示例代码:
import numpy as np
newtime = np.array([])
for i in range(12):
# Dummy data generated here, using floats like in the original post
time_year = float(2015.0)
time_mon = float(1.0*i)
time_day = float(31.0)
newtime = np.append(newtime,np.array([time_year, time_mon, time_day]))
newtime = newtime.reshape((-1,3))
注意重塑函数中的参数:( - 1,3)将告诉numpy制作第二个维度3,自动计算第一个维度。现在,如果您打印newtime,您应该看到:
[[ 2.01500000e+03 0.00000000e+00 3.10000000e+01]
[ 2.01500000e+03 1.00000000e+00 3.10000000e+01]
[ 2.01500000e+03 2.00000000e+00 3.10000000e+01]
[ 2.01500000e+03 3.00000000e+00 3.10000000e+01]
[ 2.01500000e+03 4.00000000e+00 3.10000000e+01]
[ 2.01500000e+03 5.00000000e+00 3.10000000e+01]
[ 2.01500000e+03 6.00000000e+00 3.10000000e+01]
[ 2.01500000e+03 7.00000000e+00 3.10000000e+01]
[ 2.01500000e+03 8.00000000e+00 3.10000000e+01]
[ 2.01500000e+03 9.00000000e+00 3.10000000e+01]
[ 2.01500000e+03 1.00000000e+01 3.10000000e+01]
[ 2.01500000e+03 1.10000000e+01 3.10000000e+01]]