使用错误的形状展平增量numpy值

2024-06-17 07:50:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我在一个长长的numpy阵列中每小时采样25年,形状为(365,24,25)。 这是1975-01-01 00:00:00到1999-12-31 23:59:00的数据

[[[0, 0.1, 0.2, ...], [0.3, 0.2, 0.2, ...], ...]]

现在,我想将其展平为维度(1x21900),然后将其放入如下所示的数据框中:

1975-01-01 00:00:00    0
1975-01-01 02:00:00    0.1
1975-01-01 03:00:00    0.2
1975-01-02 01:00:00    0.2

我只是想把它弄平,就像这样:

data1d = data.flatten()
df = pd.DataFrame(oneDimensionalData)

df.index = pd.date_range(start=pd.to_datetime('1975-01-01 00:00:00'), end=pd.to_datetime("1999-12-31 23:59:00"), periods=219000).to_series()

它得到了所需的向量,但我认为顺序是错误的,并且自1975年以来不是连续的

有没有人有更丰富的经验,扁平化这些三维矩阵有一个想法如何做到这一点


Tags: to数据numpydataframedfdatadatetimeindex
1条回答
网友
1楼 · 发布于 2024-06-17 07:50:32

使用np.transpose()重新排列维度

import numpy as np

# test data in ydh ordering
data_ydh = np.array(range(365*24*25)).reshape((25,365,24))
data_ydh[0,0,:]  # check y=d=0, the first 24 hours
Out[43]:
array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16,
       17, 18, 19, 20, 21, 22, 23])

# ydh to dhy
data_dhy = data_ydh.transpose((1,2,0))
data_dhy[0,:,0]  # d=0 and y=0
Out[47]:
array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16,
       17, 18, 19, 20, 21, 22, 23])

# dhy to ydh
data_ydh_back = data_dhy.transpose((2,0,1))
data_ydh_back[0,0]
Out[49]:
array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16,
       17, 18, 19, 20, 21, 22, 23])

相关问题 更多 >