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元组数组。
答案 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)