Dictionary keys and values to separate numpy arrays

后端 未结 6 630
迷失自我
迷失自我 2021-02-02 08:32

I have a dictionary as

Samples = {5.207403005022627: 0.69973543384229719, 6.8970222167794759: 0.080782939731898179, 7.8338517407140973: 0.10308033284258854, 8.53         


        
6条回答
  •  無奈伤痛
    2021-02-02 09:10

    If you care about speed (Python 3.7)

    rnd = np.random.RandomState(10)
    
    for i in [10,100,1000,10000,100000]:
        test_dict = {j:j for j in rnd.uniform(-100,100,i)}
        assert len(test_dict) == i
        print(f"\nFor {i} keys\n-----------")
        
        %timeit keys = np.fromiter(test_dict.keys(), dtype=float)
        
        %timeit keys = np.array(list(test_dict.keys()))
    

    np.fromiter is 5-7 times faster

    For 10 keys
    -----------
    712 ns ± 4.77 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
    1.65 µs ± 9.15 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
    
    For 100 keys
    -----------
    1.87 µs ± 13.7 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
    8.02 µs ± 22.3 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)
    
    For 1000 keys
    -----------
    13.7 µs ± 27.7 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)
    70.5 µs ± 251 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)
    
    For 10000 keys
    -----------
    128 µs ± 70.6 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)
    698 µs ± 455 ns per loop (mean ± std. dev. of 7 runs, 1000 loops each)
    
    For 100000 keys
    -----------
    1.45 ms ± 374 ns per loop (mean ± std. dev. of 7 runs, 1000 loops each)
    7.14 ms ± 6.1 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
    

提交回复
热议问题