Pandas数据帧二维数组,转换为三维数组

2024-10-03 04:31:05 发布

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

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

上面的代码旨在从二维数组创建三维数组。输入2D阵列形状为[10,10],预期输出形状为[10,10,3]。当前输出仅为元组的2D 10,10数组


Tags: 代码datareturndef数组元组形状apply
2条回答

这是一个简单的解决方法

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)

熊猫数据框最多用于表示二维数据。虽然它可以做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使用广播并行地对阵列的所有元素执行操作,速度非常快

相关问题 更多 >