python颜色映射_在python中将标量映射为颜色的快速方法

问题代码中最昂贵的方法不是to_rgba(),而是DataFrame.apply,因为它将函数分别应用于每行.

精髓在于,使用查找表(LUT)确实要快得多(在那儿调查的情况下是系数400).

但是请注意,在此问题的情况下,根本不需要使用matplotlib.由于您已经有了十六进制格式的可能颜色列表,因此绝对不需要使用matplotlib并将十六进制颜色转换为颜色图,然后再转换回十六进制颜色.

相反,仅将颜色列表直接用作查找表(LUT)会更快.取一个具有10000个条目的数据框(以使其与其他答案的时间一致),此问题的代码花费2.7秒.

以下代码需要380 ?s.这是7000改善的一个因素.

与链接问题答案为7.7 ms的使用matplotlib的最佳方法相比,它仍然要好20倍.

import numpy as np; np.random.seed(0)

import pandas as pd

def create_df(n=10000):

return pd.DataFrame(np.random.rand(n,1), columns=['some_value'])

def apply(df):

colors = ["#084594", "#0F529E", "#1760A8", "#1F6EB3", "#2979B9", "#3484BE", "#3E8EC4",

"#4A97C9", "#57A0CE", "#64A9D3", "#73B2D7", "#83BBDB", "#93C4DE", "#A2CBE2",

"#AED1E6", "#BBD6EB", "#C9DCEF", "#DBE8F4", "#EDF3F9", "#FFFFFF"]

colors = np.array(colors)

v = df['some_value'].values

v = ((v-v.min())/(v.max()-v.min())*(len(colors)-1)).astype(np.int16)

return pd.Series(colors[v])

df = create_df()

%timeit apply(df)

# 376 ?s

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值