繁体   English   中英

重塑序列Numpy Pandas python

[英]Reshaping Sequence Numpy Pandas python

我已经试过了:

>>> import pandas as pd
>>> import numpy as np
>>> df  = pd.read_csv("test.csv")
>>> df
   input1  input2  input3  input4  input5  input6  input7  input8  output
0       1       2       3       4       5       6       7       8       1
1       2       3       4       5       6       7       8       9       0
2       3       4       5       6       7       8       9      10      -1
3       4       5       6       7       8       9      10      11      -1
4       5       6       7       8       9      10      11      12       1
5       6       7       8       9      10      11      12      13       0
6       7       8       9      10      11      12      13      14       1
>>> seq_len=3
>>> data = []
>>> data_raw = df.values
>>> for index in range(len(data_raw) - seq_len + 1):
...     data.append(data_raw[index: index + seq_len])
...
>>> data
[array([[ 1,  2,  3,  4,  5,  6,  7,  8,  1],
       [ 2,  3,  4,  5,  6,  7,  8,  9,  0],
       [ 3,  4,  5,  6,  7,  8,  9, 10, -1]], dtype=int64), array([[ 2,  3,  4,  5,  6,  7,  8,  9,  0],
       [ 3,  4,  5,  6,  7,  8,  9, 10, -1],
       [ 4,  5,  6,  7,  8,  9, 10, 11, -1]], dtype=int64), array([[ 3,  4,  5,  6,  7,  8,  9, 10, -1],
       [ 4,  5,  6,  7,  8,  9, 10, 11, -1],
       [ 5,  6,  7,  8,  9, 10, 11, 12,  1]], dtype=int64), array([[ 4,  5,  6,  7,  8,  9, 10, 11, -1],
       [ 5,  6,  7,  8,  9, 10, 11, 12,  1],
       [ 6,  7,  8,  9, 10, 11, 12, 13,  0]], dtype=int64), array([[ 5,  6,  7,  8,  9, 10, 11, 12,  1],
       [ 6,  7,  8,  9, 10, 11, 12, 13,  0],
       [ 7,  8,  9, 10, 11, 12, 13, 14,  1]], dtype=int64)]
>>> data = np.asarray(data)
>>> data.shape
(5, 3, 9)
>>> data_reshape = data.reshape(5,9,3)
>>> data_reshape
array([[[ 1,  2,  3],
        [ 4,  5,  6],
        [ 7,  8,  1],
        [ 2,  3,  4],
        [ 5,  6,  7],
        [ 8,  9,  0],
        [ 3,  4,  5],
        [ 6,  7,  8],
        [ 9, 10, -1]],

       [[ 2,  3,  4],
        [ 5,  6,  7],
        [ 8,  9,  0],
        [ 3,  4,  5],
        [ 6,  7,  8],
        [ 9, 10, -1],
        [ 4,  5,  6],
        [ 7,  8,  9],
        [10, 11, -1]],

       [[ 3,  4,  5],
        [ 6,  7,  8],
        [ 9, 10, -1],
        [ 4,  5,  6],
        [ 7,  8,  9],
        [10, 11, -1],
        [ 5,  6,  7],
        [ 8,  9, 10],
        [11, 12,  1]],

       [[ 4,  5,  6],
        [ 7,  8,  9],
        [10, 11, -1],
        [ 5,  6,  7],
        [ 8,  9, 10],
        [11, 12,  1],
        [ 6,  7,  8],
        [ 9, 10, 11],
        [12, 13,  0]],

       [[ 5,  6,  7],
        [ 8,  9, 10],
        [11, 12,  1],
        [ 6,  7,  8],
        [ 9, 10, 11],
        [12, 13,  0],
        [ 7,  8,  9],
        [10, 11, 12],
        [13, 14,  1]]], dtype=int64)

我愿意将其作为:

array([[[1,2,3],
       [2,3,4],
       [3,4,5],
       [4,5,6],
       [5,6,7],
       [6,7,8],
       [7,8,9],
       [8,9,10],
       [1,0,-1]],
       [[2,3,4],
       [3,4,5],
       [4,5,6],
       [5,6,7],
       [6,7,8],
       [7,8,9],
       [8,9,10],
       [9,10,11],
       [0,-1,-1]],
       [[3,4,5],
       [4,5,6],
       [5,6,7],
       [6,7,8],
       [7,8,9],
       [8,9,10],
       [9,10,11],
       [10,11,12],
       [-1,-1,1]],
       [[4,5,6],
       [5,6,7],
       [6,7,8],
       [7,8,9],
       [8,9,10],
       [9,10,11],
       [10,11,12],
       [11,12,13],
       [-1,1,0]],
       [[5,6,7],
       [6,7,8],
       [7,8,9],
       [8,9,10],
       [9,10,11],
       [10,11,12],
       [11,12,13],
       [12,13,14],
       [1,0,1]]], dtype=int64)

请帮助我实现这一目标。

我已经尝试过您在问题中提供的数据。 我了解您想要拥有的东西。 请参阅以下内容:

>>> import pandas as pd
>>> import numpy as np
>>> df  = pd.read_csv("test.csv")
>>> df
   input1  input2  input3  input4  input5  input6  input7  input8  output
0       1       2       3       4       5       6       7       8       1
1       2       3       4       5       6       7       8       9       0
2       3       4       5       6       7       8       9      10      -1
3       4       5       6       7       8       9      10      11      -1
4       5       6       7       8       9      10      11      12       1
5       6       7       8       9      10      11      12      13       0
6       7       8       9      10      11      12      13      14       1
>>> seq_len=3
>>> data = []
>>> data_raw = df.values
>>> for index in range(len(data_raw) - seq_len + 1):
...     data.append(data_raw[index: index + seq_len].T)
...
>>> data
[array([[ 1,  2,  3],
       [ 2,  3,  4],
       [ 3,  4,  5],
       [ 4,  5,  6],
       [ 5,  6,  7],
       [ 6,  7,  8],
       [ 7,  8,  9],
       [ 8,  9, 10],
       [ 1,  0, -1]], dtype=int64), array([[ 2,  3,  4],
       [ 3,  4,  5],
       [ 4,  5,  6],
       [ 5,  6,  7],
       [ 6,  7,  8],
       [ 7,  8,  9],
       [ 8,  9, 10],
       [ 9, 10, 11],
       [ 0, -1, -1]], dtype=int64), array([[ 3,  4,  5],
       [ 4,  5,  6],
       [ 5,  6,  7],
       [ 6,  7,  8],
       [ 7,  8,  9],
       [ 8,  9, 10],
       [ 9, 10, 11],
       [10, 11, 12],
       [-1, -1,  1]], dtype=int64), array([[ 4,  5,  6],
       [ 5,  6,  7],
       [ 6,  7,  8],
       [ 7,  8,  9],
       [ 8,  9, 10],
       [ 9, 10, 11],
       [10, 11, 12],
       [11, 12, 13],
       [-1,  1,  0]], dtype=int64), array([[ 5,  6,  7],
       [ 6,  7,  8],
       [ 7,  8,  9],
       [ 8,  9, 10],
       [ 9, 10, 11],
       [10, 11, 12],
       [11, 12, 13],
       [12, 13, 14],
       [ 1,  0,  1]], dtype=int64)]
>>> data = np.asarray(data)
>>> data.shape
(5, 9, 3)

希望这是您想要实现的目标。 :)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM