gpt4 book ai didi

python - 如何将 numpy 数组作为对象存储在 pandas 数据框中?

转载 作者:太空狗 更新时间:2023-10-30 01:15:09 27 4
gpt4 key购买 nike

我有一系列图像,它们作为每个图像一个字符串存储在 CVS 文件中,该字符串是一个由 9216 个空格分隔的整数列表。我有一个函数可以将其转换为 96x96 numpy 数组。

我希望将这个 numpy 数组存储在我的数据框的列中而不是字符串中。

但是,当我从列中检索项目时,它不再可用作 numpy 数组。

数据可以从这里下载,training.cvs 文件的最后一列。

https://www.kaggle.com/c/facial-keypoints-detection/data

import pandas as pd
import numpy as np

df_train = pandas.read_csv("training.csv")

def convert_to_np_arr(im_as_str):
im = [int(i) for i in im_as_str.split()]
im = np.asarray(im)
im = im.reshape((96, 96))
return im

df_train['Im_as_np'] = df_train.Image.apply(convert_to_np_arr)

im = df_train.Im_as_np[0]
plt.imshow(im, cmap = cm.Greys_r)
plt.show()

如果我不使用函数并应用和存储图像,而是直接使用代码,它会按预期工作

import pandas as pd
import numpy as np

df_train = pandas.read_csv("training.csv")

im = df_train.Image[0]
im = [int(i) for i in im.split()]
im = np.asarray(im)
im = im.reshape((96, 96))

plt.imshow(im, cmap = cm.Greys_r)
plt.show()

最佳答案

Pandas 并不是一种适合处理图像的数据结构。通常,Pandas 的假设是列数远少于行数。这当然不需要是真的,对于两个维度都很小的 DataFrame 来说,这并不重要。但是对于在空间意义上很自然的数学运算,DataFrame 的关系结构并不合适,这会随着列数的增加而显现出来。鉴于此,我建议只使用 NumPy 的 csv 读取能力并将其作为二维数组或图像对象使用,例如scikits.图像。

关于python - 如何将 numpy 数组作为对象存储在 pandas 数据框中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23859025/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com