這樣做可能有更明智的做法,但以下給出了我認爲正確的輸出;您可以使用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