77894


dictionary型のlistがあります。中身は以下のようにnode、feature、labelというキーがあります。

[code]

    sample_list = [
    {'node': 12345, 'feature': [0.0, 1.0, 0.0, 0.0], 'label': 'b'},
    {'node': 9921821, 'feature': [0.0, 0.0, 1.0, 0.0], 'label': 'c'},
    {'node': 122, 'feature': [1.0, 0.0, 0.0, 0.0], 'label': 'a'},
    ]
    
[/code]

このlistからfeatureキーの値を取り出してnumpyのndarrayとしたいです。  
上の`sample_list`を例にとると、欲しいものは以下のようになります。

[code]

    [[0.0 1.0 0.0 0.0], [0.0 0.0 1.0 0.0], [1.0 0.0 0.0 0.0]]  # type numpy.ndarray, shape = (3, 4)
    
[/code]

どなたかわかる方いらっしゃいましたら教えてください。よろしくお願いします

**追記**  
`node`キーの値と`label`キーの値を`pandas.Series`型に保存する方法も教えてください。  
上記の例ですと欲しいものは以下のデータになります。

[code]

    12345  b
    9921821  c
    122  a
    
[/code]


CC BY-SA 4.0
2021-07-01T00:57:59.463
77892
2021-07-01T05:55:33.587
2021-07-01T05:49:43.747
36750
question
python python3
dictionaryのlistから数値を取り出してnumpyのndarrayに変換する方法


内包表記の例です。

[code]

    sample_list = [
    {'node': 12345, 'feature': [0.0, 1.0, 0.0, 0.0], 'label': 'b'},
    {'node': 9921821, 'feature': [0.0, 0.0, 1.0, 0.0], 'label': 'c'},
    {'node': 122, 'feature': [1.0, 0.0, 0.0, 0.0], 'label': 'a'},
    ]
    
    import numpy as np
    
    ar = np.array([d['feature'] for d in sample_list])
    print(ar)
    
    import pandas as pd
    
    sl = pd.Series([d['label'] for d in sample_list], index=[d['node'] for d in sample_list])
    print(sl)
    
[/code]


CC BY-SA 4.0
2021-07-01T02:16:32.317
77894
2021-07-01T02:16:32.317
9820
77892
answer


以下は `sample list` を `pandas.DataFrame` に変換して処理する方法です。

[code]

    import pandas as pd
    import numpy as np
    
    df = pd.DataFrame(sample_list)
    
    features = np.vstack(df.feature)
    print(f'features:\n{features}')
    print(f'\ntype: {type(features)}, shape={features.shape}')
    
    nodes_label = df.set_index('node').label
    print(f'\nnodes label:\n{nodes_label}')
    print(f'\ntype: {type(nodes_label)}')
    
    ##
    features:
    [[0. 1. 0. 0.]
     [0. 0. 1. 0.]
     [1. 0. 0. 0.]]
    
    type: <class 'numpy.ndarray'>, shape=(3, 4)
    
    nodes label:
    node
    12345      b
    9921821    c
    122        a
    Name: label, dtype: object
    
    type:<class 'pandas.core.series.Series'>
    
[/code]


CC BY-SA 4.0
2021-07-01T05:43:03.103
77899
2021-07-01T05:55:33.587
2021-07-01T05:55:33.587
77892
answer