我对几种访问
令我惊讶的是,通过
最慢的运行时间比最快的运行时间慢了5.42倍。这可能意味着一个中间结果正在被缓存。 100000次循环,3次中最好的表现:每个循环8.02微秒。
最慢的运行时间比最快的时间长了4.96倍。这可能意味着中间结果被缓存了。 100000次循环,3次中取最佳:每次循环9.85微秒。
最慢的运行时间比最快的时间长了19.29倍。这可能意味着中间结果正在被缓存。 100000次循环,3次中取最好:每次循环3.57微秒。
DataFrame
数据的方式进行了比较。以下是结果。使用 get_value
方法访问 DataFrame
是最快的方法。我在这个 post 上得到了这个方法。令我惊讶的是,通过
get_value
访问比通过底层 numpy 对象 df.values
访问更快。
问题
我的问题是,有没有一种方法可以像使用get_value
一样快速地访问 numpy 数组的元素?
设置
import pandas as pd
import numpy as np
df = pd.DataFrame(np.arange(16).reshape(4, 4))
测试
%%timeit
df.iloc[2, 2]
进行了10000次循环,最佳结果为3次中的平均每次108微秒
%%timeit
df.values[2, 2]
最慢的运行时间比最快的运行时间慢了5.42倍。这可能意味着一个中间结果正在被缓存。 100000次循环,3次中最好的表现:每个循环8.02微秒。
%%timeit
df.iat[2, 2]
最慢的运行时间比最快的时间长了4.96倍。这可能意味着中间结果被缓存了。 100000次循环,3次中取最佳:每次循环9.85微秒。
%%timeit
df.get_value(2, 2)
最慢的运行时间比最快的时间长了19.29倍。这可能意味着中间结果正在被缓存。 100000次循环,3次中取最好:每次循环3.57微秒。
x = df.values;%timeit x [2,2]
是否给出类似的结果 - 也许values
不是属性而是property
? - Eric