【问题标题】:3D array to 2d array from pandas Python and Numpy从 pandas Python 和 Numpy 到 2d 数组的 3D 数组
【发布时间】:2019-02-21 11:13:23
【问题描述】:

我使用 pandas 和 numpy 从 csv 创建了数组。 这是我将 2D csv 转换为 3D 数组的代码:

>>> import pandas as pd
>>> import numpy as npp
>>> df = pd.read_csv("test.csv")
>>> df_mat = df.values
>>> seq_len = 3
>>> data=[]
>>> for index in range(len(df_mat) - seq_len):
...     data.append(df_mat[index: index + seq_len])
...
>>> data = np.array(data)
>>> data.shape
(4, 3, 9)

使用的csv是:

input1,input2,input3,input4,input5,input6,input7,input8,output
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
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
7,8,9,10,11,12,13,14,1

现在我想将 3D 数组恢复为 2D 数组格式。
请让我知道我该怎么做。没有得到任何线索。

【问题讨论】:

  • 认为应该是 - for index in range(len(df_mat) - seq_len + 1): 来覆盖所有子数组?
  • 行列时同上。 (7, 9)

标签: python arrays python-3.x pandas numpy


【解决方案1】:

沿每个0th行上切片,直到最后一个块并与最后一个块堆叠-

np.vstack((data[np.arange(data.shape[0]-1),0],data[-1]))

给定样本数据的输出 -

In [24]: np.vstack((data[np.arange(data.shape[0]-1),0],data[-1]))
Out[24]: 
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],
       [ 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],
       [ 7,  8,  9, 10, 11, 12, 13, 14,  1]], dtype=int64)

或将0th 行跨所有块切片并堆叠,最后一个块跳过第一行-

In [28]: np.vstack((data[np.arange(data.shape[0]),0],data[-1,1:]))
Out[28]: 
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],
       [ 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],
       [ 7,  8,  9, 10, 11, 12, 13, 14,  1]], dtype=int64)

【讨论】:

猜你喜欢
  • 2012-12-09
  • 2016-04-07
  • 2018-06-02
  • 2017-07-27
  • 2012-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多