具有Numpy加载数据的自定义数据类型

时间:2017-09-27 13:08:34

标签: python arrays numpy

假设我有以下数据:

1:-1 2:-1 3:0.213213 ...
1:0.905906 2:-1 4:-1 ...

数据的格式为[index]:[value],并且要以每行代表一个数组的方式导入值。所以我期待像以下一样的2D数组:

array = ([[-1, -1, 0.213213, ...]
         [0.905906, -1, NaN, -1, ...] 
        ])

使用numpy.loadtxt(如果可能的话),我该怎么做呢?我已经阅读了dtype的文档,但我似乎无法导入密钥对应于数组索引及其对应值的数据。

1 个答案:

答案 0 :(得分:0)

我使用了大熊猫的read_csv,虽然np.loadtxt也很有用。

import pandas as pd

df = pd.read_csv('your_file', header=None, sep=' |:')
df_new = pd.DataFrame(index=df.index, 
                      columns=range(np.max(df.iloc[:, -2]))) # create empty dataframe

# Iterate over rows and place values at correct position.
for index, row in df.iterrows():
    idx = row[0::2].astype('int').values-1
    vals = row[1::2].values
    df_new.iloc[index, idx] = vals

df_new.values

返回:

array([[-1.0, -1.0, 0.213213, nan],
       [0.905906, -1.0, nan, -1.0]], dtype=object)