【问题标题】:convert pandas series AND dataframe objects to a numpy array将 pandas 系列和数据框对象转换为 numpy 数组
【发布时间】:2020-02-20 04:46:52
【问题描述】:

序列到 Numpy 数组:

我有一个pandas 系列对象,如下所示:

s1 = pd.Series([0,1,2,3,4,5,6,7,8], index=['AB', 'AC','AD', 'BA','BB','BC','CA','CB','CC'])

我想将此系列转换为numpy 数组,如下所示:

series_size = s1.size
dimension_len = np.sqrt(series_size) 
**Note: series_size will always have an integer sqrt

dimension_len 将确定所需二维数组中每个维度的大小。

在上述系列对象中,dimension_len = 3,因此所需的 numpy 数组将是一个 3 x 3 数组,如下所示:

np.array([[0, 1, 2], 
[3, 4, 5],
[6,7, 8]])

数据帧到 Numpy 数组:

我有一个 pandas 数据框对象,如下所示:

s1 = pd.Series([0,1,2,3,4,5,6,7,8], index=['AA', 'AB','AC', 'BA','BB','BC','CA','CB','CC'])
s2 = pd.Series([-2,2], index=['AB','BA'])
s3 = pd.Series([4,3,-3,-4], index=['AC','BC', 'CB','CA'])

df = pd.concat([s1, s2, s3], axis=1)

max_size = max(s1.size, s2.size, s3.size)

dimension_len = np.sqrt(max_size)
num_columns = len(df.columns)
**Note: max_size will always have an integer sqrt

生成的numpy 数组将由以下信息确定:

num_columns = 确定数组的维数 dimension_len = 确定每个维度的大小

在上面的示例中,所需的 numpy 数组将为 3 x 3 x 3(num_columns = 3 和 dimension_len = 3)

df 的第一列将变为 DESIRED_ARRAY[0],df 的第二列将变为 DESIRED_ARRAY[1],df 的第三列将变为 DESIRED_ARRAY[2],依此类推……

我想要的数组看起来像:

np.array([[[0, 1, 2], 
[3, 4, 5],
[6, 7, 8]],

[[np.nan,-2, np.nan],
[2, np.nan, np.nan],
[np.nan, np.nan, np.nan]],

[[np.nan,np.nan, 4],
[np.nan, np.nan, 3],
[-4, -3, np.nan]],
])

【问题讨论】:

    标签: python arrays pandas numpy


    【解决方案1】:

    IIUC,你可以试试 numpy transpose 和reshape

    df.values.T.reshape(-1,  int(dimension_len), int(dimension_len))
    
    Out[30]:
    array([[[ 0.,  1.,  2.],
            [ 3.,  4.,  5.],
            [ 6.,  7.,  8.]],
    
           [[nan, -2., nan],
            [ 2., nan, nan],
            [nan, nan, nan]],
    
           [[nan, nan,  4.],
            [nan, nan,  3.],
            [-4., -3., nan]]])
    

    【讨论】:

      猜你喜欢
      • 2018-11-08
      • 1970-01-01
      • 2020-06-20
      • 1970-01-01
      • 1970-01-01
      • 2022-01-12
      • 2016-03-31
      • 2019-02-25
      相关资源
      最近更新 更多