【问题标题】:how to convert a ndarray to a array in python如何在python中将数组转换为数组
【发布时间】:2019-02-03 14:19:28
【问题描述】:

我有一个问题,我有这行:

s=codecs.open('file.csv', encoding="utf-8").read()
array1=np.asarray(s.splitlines())

print(array1)

我变成了这个数组的结果:

['39, State-gov, 77516, Bachelors, 13, Never-married, Adm-clerical, Not-in-family, White, Male, 2174, 0, 40, United-States, <=50K'
 '50, Self-emp-not-inc, 83311, Bachelors, 13, Married-civ-spouse, Exec-managerial, Husband, White, Male, 0, 0, 13, United-States, <=50K'
 '38, Private, 215646, HS-grad, 9, Divorced, Handlers-cleaners, Not-in-family, White, Male, 0, 0, 40, United-States, <=50K'
 ...
 '36, Private, 146311, 9th, 5, Married-civ-spouse, Machine-op-inspct, Husband, White, Male, 0, 0, 40, United-States, <=50K'
 '47, Self-emp-not-inc, 159869, Doctorate, 16, Married-civ-spouse, Craft-repair, Husband, White, Male, 0, 0, 50, United-States, <=50K'
 '21, Private, 204641, Some-college, 10, Never-married,']

我想要的是把它变成:

[['39', 'State-gov', '77516', 'Bachelors', '13',....,'<=50K]['50'...]]

现在也是一个包含一行和多列的数组,每列是一个字符串,我想将每一列更改为一行,其中包含具有字符数的列数..

我没有任何想法,我想拆分它但我不能

有人可以帮我吗?

谢谢!

【问题讨论】:

    标签: python arrays numpy numpy-ndarray


    【解决方案1】:

    方法一:从文件中生成想要的数组

    如果您是从 csv 开始,您不妨使用np.genfromtxt

    如果filename.csv 看起来像:

    39, State-gov, 77516, Bachelors, 13, Never-married, Adm-clerical, Not-in-family, White, Male, 2174, 0, 40, United-States, <=50K
    50, Self-emp-not-inc, 83311, Bachelors, 13, Married-civ-spouse, Exec-managerial, Husband, White, Male, 0, 0, 13, United-States, <=50K
    

    然后:

    new_arr = np.genfromtxt('filename.csv', dtype='str')
    
    >>> new_arr
    array([['39,', 'State-gov,', '77516,', 'Bachelors,', '13,',
            'Never-married,', 'Adm-clerical,', 'Not-in-family,', 'White,',
            'Male,', '2174,', '0,', '40,', 'United-States,', '<=50K'],
           ['50,', 'Self-emp-not-inc,', '83311,', 'Bachelors,', '13,',
            'Married-civ-spouse,', 'Exec-managerial,', 'Husband,', 'White,',
            'Male,', '0,', '0,', '13,', 'United-States,', '<=50K']],
          dtype='<U19')
    

    方法 2:修复数组:

    否则,如果你已经有数组:

    >>> arr
    array(['39, State-gov, 77516, Bachelors, 13, Never-married, Adm-clerical, Not-in-family, White, Male, 2174, 0, 40, United-States, <=50K',
           '50, Self-emp-not-inc, 83311, Bachelors, 13, Married-civ-spouse, Exec-managerial, Husband, White, Male, 0, 0, 13, United-States, <=50K'],
          dtype='<U133')
    

    您可以遍历它并拆分每个字符串以获得您想要的输出:

    new_arr = np.array([i.split() for i in arr])
    
    >>> new_arr
    array([['39,', 'State-gov,', '77516,', 'Bachelors,', '13,',
            'Never-married,', 'Adm-clerical,', 'Not-in-family,', 'White,',
            'Male,', '2174,', '0,', '40,', 'United-States,', '<=50K'],
           ['50,', 'Self-emp-not-inc,', '83311,', 'Bachelors,', '13,',
            'Married-civ-spouse,', 'Exec-managerial,', 'Husband,', 'White,',
            'Male,', '0,', '0,', '13,', 'United-States,', '<=50K']],
          dtype='<U19')
    

    【讨论】:

    • 谢谢,方法一是我的解决方案!!
    • 很高兴为您提供帮助:)
    猜你喜欢
    • 2018-01-03
    • 2012-07-26
    • 1970-01-01
    • 1970-01-01
    • 2021-01-01
    • 2019-08-13
    • 2015-08-20
    • 2015-07-12
    • 2021-01-12
    相关资源
    最近更新 更多