【问题标题】:Convert a pandas dataframe column of type object to a numpy array将对象类型的 pandas 数据框列转换为 numpy 数组
【发布时间】:2018-11-08 06:47:03
【问题描述】:

我有一个包含图像 ID、图像类和图像数据的 pandas 数据框:

img_train.head(5)

   ID  index  class                                               data
0  10472  10472      0  [[[255, 255, 255, 0], [255, 255, 255, 0], [255...
1   7655   7655      0  [[[255, 255, 255, 0], [255, 255, 255, 0], [255...
2   6197   6197      0  [[[255, 255, 255, 0], [255, 255, 255, 0], [255...
3   9741   9741      0  [[[255, 255, 255, 0], [255, 255, 255, 0], [255...
4   9169   9169      0  [[[255, 255, 255, 0], [255, 255, 255, 0], [255...

我正在尝试将这些列中的每一列转换为一个 numpy 数组:

train_img_array = np.array([])
train_id_array = np.array([])
train_lab_array = np.array([])
count = 0
for index, row in img_train.iterrows():
    imgid = row['ID']
    imgclass = row['class']
    imgdata = row['data']
    #print(imgdata)
    train_img_array = np.append(train_img_array, imgdata )
    train_lab_array = np.append(train_lab_array, imgclass )
    train_id_array = np.append(train_id_array, imgid )

但是,保存图像数据并且属于“对象”类型的列未转换为 numpy 数组中的相应行。例如,这是从原始数据帧处理 58 行后每个 numpy 数组的形状:

train_img_array.shape
train_lab_array.shape
train_id_array.shape
(93615200,)
(58,)
(58,)

我该如何解决这个问题?

【问题讨论】:

  • 它返回如下内容:array([ array([[[255, 255, 255, 0], [255, 255, 255, 0], [255, 255, 255, 0] , ..., [255, 255, 255, 0], [255, 255, 255, 0], [255, 255, 255, 0]],
  • 您能提供更多信息吗?尤其是row['ID'].values.dtyperow['class'].values.dtyperow['data'].values.dtype 会很有帮助。
  • @Scotty1- 这是 dtypes:ID int64 *** class int64 *** data object *** dtype: object
  • 谢谢,但您应该改进代码格式,使其易于阅读。有关形状等的更多信息也会有所帮助。
  • img_train.values 应该给你一个 numpy 数组,不是吗?

标签: python arrays pandas numpy dataframe


【解决方案1】:

我已经找到了这个问题的答案。这是相当直接的,我只是没有看到它开始。这就是我如何将对象数据以及 numpy 数组 (.values :) )

train_img_array = np.array([])
train_id_array = np.array([])
train_lab_array = np.array([])
train_id_array = img_train['ID'].values
train_lab_array = img_train['class'].values
train_img_array =img_train['data'].values
#train_img_array = np.row_stack(img_train['data'])

【讨论】:

  • 除非你想指定数组的大小,否则你不需要预先声明数组。
猜你喜欢
  • 2020-02-20
  • 1970-01-01
  • 2017-06-28
  • 2020-06-20
  • 1970-01-01
  • 2022-01-06
  • 2016-03-31
  • 2019-02-25
相关资源
最近更新 更多