【问题标题】:How to convert string from pandas dataframe to 3-dimensional array in numpy如何在numpy中将字符串从pandas数据帧转换为3维数组
【发布时间】:2019-10-27 11:43:04
【问题描述】:

我已将包含形状 (75, 100, 3) 的 numpy 数组的 pandas 数据框导出到 csv。当我导入这个 csv 文件来获取我的数据框时,我的 numpy 数组是一个字符串。我在尝试将此字符串转换为形状为 numpy 的数组(75、100、3)时遇到了很多问题。

我的字符串是这样的:

[[[198 113 144],  [212 137 157],  [213 133 158]

我尝试了几种方法将其转换为 3d-NUmpy 数组,但均未成功。例如,在 sn -p 代码中,我继续得到一个字符串数组。


train = pd.read_csv(os.path.join(data_dir, 'trainset.csv'))
train['image'] = train['image'].map(lambda x: x.replace('\n',','))
train['image'] = train['image'].map(lambda x: np.asarray(x))

有人知道处理这个问题的简单方法吗?

【问题讨论】:

    标签: python pandas numpy-ndarray


    【解决方案1】:

    默认情况下,asarray 方法会从数据本身推断数据类型。因为您是从 csv 文件中读取,所以它们都是字符串。

    可以使用np.asarray方法的dtype参数来设置数据类型。

    import numpy as np
    data = [['3','4'],['45','75']]
    num_array = np.asarray(data, dtype=np.int)
    print(num_array.dtype)
    

    所以你的代码只需要更改为:

    train = pd.read_csv(os.path.join(data_dir, 'trainset.csv'))
    train['image'] = train['image'].map(lambda x: x.replace('\n',','))
    train['image'] = train['image'].map(lambda x: np.asarray(x, dtype=np.int))
    

    您可以将 dtype=int 更改为 np.whatever 数据类型。

    【讨论】:

      猜你喜欢
      • 2021-04-04
      • 1970-01-01
      • 2021-05-19
      • 2011-12-10
      • 1970-01-01
      • 1970-01-01
      • 2020-07-12
      • 2016-11-29
      相关资源
      最近更新 更多