这样做可能有更明智的做法,但以下给出了我认为正确的输出;您可以使用structured arrays:
import numpy as np
dat = [['User1', 'Male', '2.2'], ['User2', 'Female', '3.777'], ['User3', 'Unknown', '0.0']]
# create data types: two strings of length 10 and float
dt = np.dtype('a10, a10, float')
# convert the inner lists to tuples so that a structured array can be used
for ind, l in enumerate(dat):
dat[ind] = tuple(l)
# convert dat to an array
my_arr = np.array(dat, dt)
输出:
array([('User1', 'Male', 2.2), ('User2', 'Female', 3.777),
('User3', 'Unknown', 0.0)],
dtype=[('f0', 'S10'), ('f1', 'S10'), ('f2', '<f8')])
您也可以通过做给名称的列:
dt = {'names': ['user', 'gender', 'number'], 'formats':['a10', 'a10', 'float']}
my_arr = np.array(dat, dt) # dat is the list with tuples, see above
输出现在是:
array([('User1', 'Male', 2.2), ('User2', 'Female', 3.777),
('User3', 'Unknown', 0.0)],
dtype=[('user', 'S10'), ('gender', 'S10'), ('number', '<f8')])
然后你可以交流做一个单独的列
my_arr['number']
array([ 2.2 , 3.777, 0. ])
my_arr['user']
array(['User1', 'User2', 'User3'], dtype='|S10')
我会建议使用在Python pandas一个数据帧在这里您可以轻松应对不同的数据类型和复杂的数据结构。
对于示例:
import pandas as pd
pd.DataFrame(dat, columns=['user', 'gender', 'some number'])
会那么简单地给你:
user gender some number
0 User1 Male 2.2
1 User2 Female 3.777
2 User3 Unknown 0.0
你有什么样的琴弦?像“2.3”,“7.89”或“myString”,“myString2”? “没有成功”是什么意思?什么地方出了错? – Cleb
查看更新后的帖子。 – pir