熊猫数据框2维数组,转换为3维数组

时间:2020-02-21 18:57:04

标签: python pandas

def dataGen(x):
    x1=x/2
    x2=x/3
    x3=x+x1
    return x1,x2,x3
output3DArray=data_2D_ArrayDf.apply(dataGen)

上面是用于从2 D数组创建3 D数组的代码。输入2D数组形状为[10,10],预期输出形状为[10,10,3]。当前输出仅为2D 10,10元组数组。

2 个答案:

答案 0 :(得分:1)

Pandas DataFrame最多用于表示2d数据。尽管它可以做到multiindexing,但对于您的情况而言却并不重要。

如果您使用numpy数组,这是非常简单的

def add_dim(x):
    return np.expand_dims(x, axis=-1) # <- axis=0 for (3,10,10) or -1 for (10,10,3)

X = data_2D_Array
output3DArray = np.concatenate((add_dim(X/2), add_dim(X/3), add_dim(X+X/2)), axis=2)

Numpy使用广播并行地对数组的所有元素执行操作,而且速度非常快。

答案 1 :(得分:1)

这是一个简单的解决方法

import numpy as np


def dataGen(a_2d_array):
    x, y = a_2d_array.shape
    output = np.zeros((x, y, 3))
    output[:, :, 0] = a_2d_array / 2
    output[:, :, 1] = a_2d_array / 3
    output[:, :, 2] = a_2d_array * 3 / 2
    return output


a_2d_array = np.random.rand(10, 10)
a_3d_array = dataGen(a_2d_array)
print(a_3d_array.shape)

# (10, 10, 3)