文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
第28单元 将数组用作集合
在某些情况下,数组内各项的顺序并不重要,重要的是这些项的组合,例如判断数组中是否存在某个特定的项,或者数组中存在什么类型的项。使用numpy可以将数组当作数学中的集合那样进行处理。
函数unique(x)返回x中所有唯一元素组成的数组。它是Counter模块的一个很好的替代品(关于Counter模块的内容,请参考第7单元“使用计数器”),但它并未真正计算元素出现的次数。
众所周知,数据科学几乎使生物信息学成了最好的学科(这真是自切片面包被发明以来最好的东西啦!4)。在生物信息学领域,人们使用数据科学来处理基因组测序,也就是确定DNA核苷酸的顺序。下面让我们做一些类似于在生物信息学中做的工作,找出在随机DNA片段中存在的核苷酸种类:
4切片面包意义重大,以至于英语中出现了这样的表达:“The best thing since sliced bread.”——译者注
dna = "AGTCCGCGAATACAGGCTCGGT" dna_as_array = np.array(list(dna)) ➾ array(['A', 'G', 'T', 'C', 'C', 'G', 'C', 'G', 'A', 'A', 'T', 'A', 'C', ➾ 'A', 'G', 'G', 'C', 'T', 'C', 'G', 'G', 'T'], ➾ dtype='<U1') np.unique(dna_as_array) ➾ array(['A', 'C', 'G', 'T'], ➾ dtype='<U1')
想必你已经明白了5。
5www.genomenewsnetwork.org/resources/whats_a_genome/Chp2_1.shtml
函数in1d(needle, haystack)返回一个布尔数组,如果needle的元素在haystack中,则返回数组的对应位置元素为True。数组needle和haystack不需要具有相同的形状。
np.in1d(["MSFT", "MMM", "AAPL"], sap) ➾ array([False, True, False], dtype=bool)
函数union1d()和intersect1d()计算两个一维数组的并集和交集,数组的大小可以不相同。不过,相信你会更愿意使用Python原生的集合运算符&和|,因为二者的运行速度大约是numpy的两倍!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论