0

请我正在做一个项目,我必须做一些数据预处理我有一个看起来像这样的数据框(这只是一个简化的例子

index | pixels 
0     | 10 20 30 40 
1     | 11 12 13 14

我想将它转换为形状 (2,2,2,1) 的 np 数组,像素列的类型是对象是否有任何解决方案可以在没有循环的情况下做到这一点,因为我有一个带有大图像的 28k 行数据框?我试过循环,但在我的机器上执行需要很长时间

4

1 回答 1

2

使用str.split+ astype+ to_numpy+ reshape

a = (
    df['pixels'].str.split(' ', expand=True)
        .astype(int).to_numpy()
        .reshape((2, 2, 2, 1))
)

a

[[[[10]
   [20]]

  [[30]
   [40]]]


 [[[11]
   [12]]

  [[13]
   [14]]]]

完整的工作示例:

import pandas as pd

df = pd.DataFrame({'pixels': ['10 20 30 40', '11 12 13 14']})

a = (
    df['pixels'].str.split(' ', expand=True)
        .astype(int).to_numpy()
        .reshape((2, 2, 2, 1))
)
print(a)
于 2021-06-03T21:10:41.077 回答