当前位置:首页 > 编程教程 > Python技术文章 > 对numpy中的数组条件筛选功能详解

如何对numpy中的数组条件筛选

  • 发布时间:
  • 作者:码农之家
  • 点击:184

这篇文章主要知识点是关于numpy、数组、的内容,如果大家想对相关知识点有系统深入的学习,可以参阅以下电子书

Python游戏编程快速上手
  • 类型:Python大小:41.2 MB格式:PDF作者:斯维加特
立即下载

对numpy中的数组条件筛选功能详解

在程序设计中,时常会遇到数据的唯一化、相同、相异信息的提取等工作,在格式化的向量存储矩阵中南,numpy能够提供比较不错的快速处理功能。

1,唯一化的实现:

In [63]: data = np.array(['int','float','int','boolean','double','boolean'])
In [64]: data
Out[64]:
array(['int', 'float', 'int', 'boolean', 'double', 'boolean'],
  dtype='|S7')
In [65]: np.unique(data)
Out[65]:
array(['boolean', 'double', 'float', 'int'],
  dtype='|S7')
In [66]: data = np.array([1,5,3,6,2,4,1,3,5,7,9])
In [67]: data
Out[67]: array([1, 5, 3, 6, 2, 4, 1, 3, 5, 7, 9])
In [68]: np.unique(data)
Out[68]: array([1, 2, 3, 4, 5, 6, 7, 9])

通过unique可以实现数组的唯一化,并且,唯一化后的返回值会进行排序。

2,交集的实现

In [69]: data1 = np.arange(10)
In [70]: data1
Out[70]: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
In [71]: data2 = np.array([2,8,6,4])
In [72]: np.intersect1d(data1,data2)
Out[72]: array([2, 4, 6, 8])

使用intersect1d可以实现求取两个数组集合的交集。

2,并集计算

In [73]: np.union1d(data1,data2)
Out[73]: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

union1d可以实现对两个数组集合的并集计算。

3,子集判断

In [74]: np.in1d(data1,data2)
Out[74]: array([False, False, True, False, True, False, True, False, True, False], dtype=bool)
In [75]: np.in1d(data2,data1)
Out[75]: array([ True, True, True, True], dtype=bool)

通过in1d可以实现对第一个参数数组中的每个元素是否是第二个参数数组子集的判断,而最终通过判断返回的布尔数组即可判断两个参数数组的子集关系。

4,差异判断

4.1,集合差判断

In [76]: np.setdiff1d(data1,data2)
Out[76]: array([0, 1, 3, 5, 7, 9])
In [77]: np.setdiff1d(data2,data1)
Out[77]: array([], dtype=int32)

setdiff1d可以求解出存在于第一个集合但是并不存在于第二个集合中的元素。返回值是一个数组集合。

4.1 数组“异或”求解

In [78]: np.setxor1d(data1,data2)
Out[78]: array([0, 1, 3, 5, 7, 9])
In [79]: np.setxor1d(data2,data1)
Out[79]: array([0, 1, 3, 5, 7, 9])

setxor1d用于求解不同时存在于两个数组中的元素,并返回一个数组集合。两个参数的顺序变化不会改变求解的结果。返回的结果是是一个有序的数组序列。

上面的几个基本的逻辑判断功能如果能够使用得当,能够实现多种筛选判断的操作。

这篇对numpy中的数组条件筛选功能详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持码农之家。

以上就是本次给大家分享的关于java的全部知识点内容总结,大家还可以在下方相关文章里找到相关文章进一步学习,感谢大家的阅读和支持。

Python 相关电子书
学习笔记
网友NO.414329

numpy中的delete删除数组整行和整列的实例

numpy的delete是可以删除数组的整行和整列的,下面简单介绍和举例说明delete函数用法: numpy.delete(arr, obj, axis=None) 参数: arr:输入数组 obj:切片,整数,表示哪个子数组要被移除 axis:删除子数组的轴 axis = 0:表示删除数组的行 axis = 1:表示删除数组的列 axis = None:表示把数组按一维数组平铺在进行索引删除 返回:一个新的子数组 x = array([[1,2,3],[4,5,6],[7,8,9]]) 1.删除第i行和多行操作 x = numpy.delete(x,i, axis = 0) 删除多行操作: 2.删除第i列或多列操作 x = numpy.delete(x,i, axis = 1) 删除多列操作: 3.axis = None 操作 以上这篇numpy中的delete删除数组整行和整列的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持码农之家。 ……

网友NO.219264

numpy数组广播的机制

numpy数组的广播功能强大,但是也同时让人疑惑不解,现在让我们来谈谈其中的原理。 广播原则: 如果两个数组的后缘维度(即:从末尾开始算起的维度)的轴长相符或其中一方的长度为1,则认为它们是广播兼容的,广播会在缺失和(或)长度为1的轴上进行. 上面的原则很重要,是广播的指导思想,下面我们来看看例子。 1.其实在最简单的数组与标量数字之间的运算就存在广播,只是我们把它看作理所当然了。 2.再看下一个例子,这个大家都会一致认为这是广播了 根据广播原则:arr1的shape为(4,1),arr2的shape为(3,),所以会同时在两个轴发生广播,arr1的shape变成(4,3),而arr2的shape变成(4,3),所以结果也为(4,3). 其实代码中发生了下图描述的事情: 3.同理,我们可以得到三维数组的广播情况 根据广播原则分析:arr1的shape为(3,4,2),arr2的shape为(4,2),它们的后缘轴长度都……

网友NO.577043

numpy concatenate数组拼接方法示例介绍

数组拼接方法一 思路:首先将数组转成列表,然后利用列表的拼接函数append()、extend()等进行拼接处理,最后将列表转成数组。 示例1: import numpy as np a=np.array([1,2,5]) b=np.array([10,12,15]) a_list=list(a) b_list=list(b) a_list.extend(b_list) a_list[1, 2, 5, 10, 12, 15] a=np.array(a_list) aarray([ 1, 2, 5, 10, 12, 15]) 该方法只适用于简单的一维数组拼接,由于转换过程很耗时间,对于大量数据的拼接一般不建议使用。 数组拼接方法二 思路:numpy提供了numpy.append(arr, values, axis=None)函数。对于参数规定,要么一个数组和一个数值;要么两个数组,不能三个及以上数组直接append拼接。 示例2: a=np.arange(5) aarray([0, 1, 2, 3, 4]) np.append(a,10)array([ 0, 1, 2, 3, 4, 10]) aarray([0, 1, 2, 3, 4]) b=np.array([11,22,33]) barray([11, 22, 33]) np.append(a,b)array([ 0, 1, 2, 3, 4, 11, 22, 33]) aarray([[1, 2, 3], [4, 5, 6]]) b=np.array([[7,8,9],[10,11,12]]) b……

网友NO.982221

在NumPy中创建空数组/矩阵的方法

如何在NumPy中创建空数组/矩阵? 在添加行的情况下,你最好的选择是创建一个与数据集最终一样大的数组,然后向它添加数据 row-by-row: import numpy a = numpy.zeros(shape=(5,2)) aarray([[ 0., 0.], [ 0., 0.], [ 0., 0.], [ 0., 0.], [ 0., 0.]]) a[0] = [1,2] a[1] = [2,3] aarray([[ 1., 2.], [ 2., 3.], [ 0., 0.], [ 0., 0.], [ 0., 0.]]) NumPy数组与列表是一个非常不同的数据结构,它被设计用于不同的方式。 你对 hstack的使用可能非常低效。 每次调用它时,现有数组中的所有数据都将复制到新数组中。 (append 函数会有同样的问题。) 如果你想一次构建一个矩阵,最好把它放在一个列表中,直到它完成,然后将它转换成数组。 mylist = []for item in data: mylist.append(item)mat = numpy.array(mylist) item 可以是列表,数组或者任何 iterable,只要每个 item 具有相同数量的元素。 在这种特殊情况下,你可以简单地使用( data 是一些……

<
1
>

Copyright 2018-2020 www.xz577.com 码农之家

版权投诉 / 书籍推广 / 赞助:520161757@qq.com