首页 / PYTHON / python – 压缩正弦波表
python – 压缩正弦波表
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – 压缩正弦波表,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2171字,纯文字阅读大概需要4分钟。
内容图文
![python – 压缩正弦波表](/upload/InfoBanner/zyjiaocheng/823/0c49d5ad4cb447118fdf3435491a08ba.jpg)
我有一个包含1024个条目的大型数组,其范围内有7位值(14,86)
这意味着有多个索引范围具有相同的值.
例如,
consider the index range 741 to 795. It maps to 14
consider the index range 721 to 740. It maps to 15
consider the index range 796 to 815. It maps to 15
我想将这个地图提供给一个python程序,该程序会显示以下内容:
if((index >= 741) and (index <= 795)) return 14;
if((index >= 721) and (index <= 740)) return 15;
if((index >= 796) and (index <= 815)) return 15;
groupby映射值的一些代码已准备就绪,但我很难使用pairwise编码表达式.
以前有人做过类似的事吗?
我已经以两种形式上传了数据集:
通常,ordered by index.
解决方法:
关闭后,我姗姗来迟找到了这个解决方案“What’s the most Pythonic way to identify consecutive duplicates in a list?”.
注意:使用像sine这样的周期性fn,只需存储四分之一(即256个值)或表的一半,然后在查找时对索引执行一些(定点)算术.正如我评论的那样,如果你进一步不存储50的偏移量,你需要少一点,这需要在查找时间之后增加一个整数.因此,可以轻松实现79%的压缩. RLE会给你更多.即使fn有噪音,你仍然可以通过这种通用方法得到适当的压缩.
正如agf指出的那样,你的f(n)= 50 36 * sin(72 * pi * n / 1024)= 50 g(n).
因此,将g(n)= 36 * sin(72 * pi * n / 1024)的256个值制成表格,仅适用于范围n = 0..255
那么f(n)很容易通过以下公式计算:
if 0 <= n < 256, f(n) = 50 + g(n)
if 256 <= n < 512, f(n) = 50 + g(511-n)
if 512 <= n < 768, f(n) = 50 - g(n-512)
if 768 <= n < 1024, f(n) = 50 - g(1023-n)
无论如何这里是一个通用的表压缩器解决方案,它将生成(istart,iend,value)三元组.
我使用list comprehensions和itertools.takewhile()来解决如何使用Python进行更多操作的问题.需要抛光.
#import itertools
table_="""
0 50
1 50
...
1021 49
1022 50
1023 50""".split()
# Convert values to int. Throw away the indices - will recover them with enumerate()
table = [int(x) for x in table_[1::2]]
compressed_table = []
istart = 0
for i,v in enumerate(table):
if v != table[i-1]:
iend = i-1
compressed_table.append((istart,iend,table[i-1]))
istart = i
else:
continue # skip identical values
# Slightly ugly: append the last value, when the iterator was exhausted
compressed_table.append((istart,i,table[i]))
(注意,在agf改变他的方法之前我开始使用表压缩器方法…试图获得一个itertools或list-comprehension解决方案)
内容总结
以上是互联网集市为您收集整理的python – 压缩正弦波表全部内容,希望文章能够帮你解决python – 压缩正弦波表所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。