返回介绍

第28单元 将数组用作集合

发布于 2024-01-28 22:01:16 字数 1357 浏览 0 评论 0 收藏 0

在某些情况下,数组内各项的顺序并不重要,重要的是这些项的组合,例如判断数组中是否存在某个特定的项,或者数组中存在什么类型的项。使用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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文