numpy ndarray 按条件筛选数组,关联筛选的例子

最近的项目中大量涉及数据的预处理工作,对于ndarray的使用非常频繁。其中ndarray如何进行数值筛选,总结了几种方法。

1.按某些固定值筛选

如下面这段代码从,ndarray中可以筛选出数值等于3的子数组和其在原数组中的索引位置。

import numpy as np

arr = np.array([1, 1, 1, 134, 45, 3, 46, 45, 65, 3, 23424, 234, 12, 12, 3, 546, 1, 2])
print(np.where(arr==3))
print(arr[np.where(arr == 3)])

Output:

(array([ 5, 9, 14], dtype=int32),)
[3 3 3]

2.按多个固定值筛选

按上述方法筛选多个固定值也是可行的,将不同条件用括号括起来,之间打 | 即可。

import numpy as np

arr = np.array([1, 1, 1, 134, 45, 3, 46, 45, 65, 3, 23424, 234, 12, 12, 3, 546, 1, 2])
print(np.where((arr == 3) | (arr == 1)))
print(arr[np.where((arr == 3) | (arr == 1))])

Output:

(array([ 0, 1, 2, 5, 9, 14, 16], dtype=int32),)
[1 1 1 3 3 3 1]

3.按范围筛选

除了按固定值,我们还可以按一定的范围进行筛选

import numpy as np

arr = np.array([1, 1, 1, 134, 45, 3, 46, 45, 65, 3, 23424, 234, 12, 12, 3, 546, 1, 2])
print(np.where(arr > 3))
print(arr[np.where(arr > 3)])

Output:

(array([ 3, 4, 6, 7, 8, 10, 11, 12, 13, 15], dtype=int32),)
[ 134  45  46  45  65 23424  234  12  12  546]

如果不需要index,还可以有更快的方法

import numpy as np

arr = np.array([1, 1, 1, 134, 45, 3, 46, 45, 65, 3, 23424, 234, 12, 12, 3, 546, 1, 2])
print(arr[arr > 3])

Output:

[ 134  45  46  45  65 23424  234  12  12  546]

那为什么还需要用np.where呢?因为索引可以满足不同数组间的筛选,比如有a, b 两个数组我们需要筛选出所有a == 0的b时即可使用np.where函数。

import numpy as np

a = np.array([0, 0, 1, 1, 0, 1, 1, 0, 1])
b = np.arange(len(a))
print(a)
print(b)
print(b[np.where(a == 0)])

Output:

[0 0 1 1 0 1 1 0 1]
[0 1 2 3 4 5 6 7 8]
[0 1 4 7]

以上这篇numpy ndarray 按条件筛选数组,关联筛选的例子就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • 从numpy数组中取出满足条件的元素示例

    例如问题:从 arr 数组中提取所有奇数元素. input:arr = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) output: #> array([1, 3, 5, 7, 9]) Solution: #Input >>> arr = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) #Solution arr = arr[arr % 2 == 1] >>> array([1, 3, 5, 7

  • numpy数组拼接简单示例

    NumPy数组是一个多维数组对象,称为ndarray.其由两部分组成: ·实际的数据 ·描述这些数据的元数据 大部分操作仅针对于元数据,而不改变底层实际的数据. 关于NumPy数组有几点必需了解的: ·NumPy数组的下标从0开始. ·同一个NumPy数组中所有元素的类型必须是相同的. NumPy数组属性 在详细介绍NumPy数组之前.先详细介绍下NumPy数组的基本属性.NumPy数组的维数称为秩(rank),一维数组的秩为1,二维数组的秩为2,以此类推.在NumPy中,每一个线性的数组称为是

  • 对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='|

  • numpy中实现ndarray数组返回符合特定条件的索引方法

    在numpy的ndarray类型中,似乎没有直接返回特定索引的方法,我只找到了where函数,但是where函数对于寻找某个特定值对应的索引很有用,对于返回一定区间内值的索引不是很有效,至少我没有弄明白应该如何操作尴尬.下面先说一下where函数的用法吧. (1)where函数的使用场景: 例如现在我生成了一个数组: import numpy as np arr=np.array([1,1,1,134,45,3,46,45,65,3,23424,234,12,12,3,546,1,2]) 现在a

  • python实现在多维数组中挑选符合条件的全部元素

    问题产生:今天在编写神经网络的Cluster作业时,需要根据根据数据标签用不同的颜色画出数据的分布情况,由此学习到了这种高效的方法. 传统思路:用for循环来挑选符合条件的元素,这样十分浪费时间. 代码示例: from sklearn.datasets.samples_generator import make_blobs import numpy as np import matplotlib.pyplot as plt #product 20 samples and divide them

  • numpy ndarray 按条件筛选数组,关联筛选的例子

    最近的项目中大量涉及数据的预处理工作,对于ndarray的使用非常频繁.其中ndarray如何进行数值筛选,总结了几种方法. 1.按某些固定值筛选 如下面这段代码从,ndarray中可以筛选出数值等于3的子数组和其在原数组中的索引位置. import numpy as np arr = np.array([1, 1, 1, 134, 45, 3, 46, 45, 65, 3, 23424, 234, 12, 12, 3, 546, 1, 2]) print(np.where(arr==3)) p

  • numpy.ndarray 交换多维数组(矩阵)的行/列方法

    如下所示: >> import numpy as np >> P = np.eye(3) >> P array([[ 1., 0., 0.], [ 0., 1., 0.], [ 0., 0., 1.]]) 交换第 0 行和第 2 行: >> P[[0, 2], :] = P[[2, 0], :] # P[(0, 2), :] = P[(2, 0), :] >> P array([[ 0., 0., 1.], [ 0., 1., 0.], [ 1.

  • numpy ndarray 取出满足特定条件的某些行实例

    在进行物体检测的ground truth boxes annotations包围框坐标数据整理时,需要实现这样的功能: numpy里面,对于N*4的数组,要实现对于每一行,如果第3列和第1列数值相等或者第2列和第0列数值相等,就删除这一行,要返回保留下来的numpy数组 shape M*4 对于numpy数组的操作要尽量避免for循环,因为numpy数组支持布尔索引. import numpy as np a1=np.array( [1,0,1,5] ) a2=np.array( [0,8,5,

  • nditer—numpy.ndarray 多维数组的迭代操作

    1. Single array iteration >>> a = np.arange(6).reshape(2,3) >>> for x in np.nditer(a): ... print x, ... 0 1 2 3 4 5 也即默认是行序优先(row-major order,或者说是 C-order),这样迭代遍历的目的在于,实现和内存分布格局的一致性,以提升访问的便捷性: >>> for x in np.nditer(a.T): ... pr

  • PowerShell使用match操作符来筛选数组

    先看下面这个例子: PS C:\Users\Hong> (ipconfig) -match 'IPv4' IPv4 地址 . . . . . . . . . . . . : 192.168.1.102 IPv4 地址 . . . . . . . . . . . . : 192.168.193.1 IPv4 地址 . . . . . . . . . . . . : 192.168.93.1 我们知道ipconfig是显示当前计算机的TCP/IP配置信息的,其中有一项是IP地址.如果有多个网卡,或者

  • PowerShell中使用正则表达式筛选数组实例

    本文介绍PowerShell中使用match操作符,配合正则表达式从数组中筛选出想要的内容. 先看下面这个例子: 复制代码 代码如下: PS C:\Users\Hong> (ipconfig) -match 'IPv4'    IPv4 地址 . . . . . . . . . . . . : 192.168.1.102    IPv4 地址 . . . . . . . . . . . . : 192.168.193.1    IPv4 地址 . . . . . . . . . . . . :

  • C#使用linq对数组进行筛选排序的方法

    本文实例讲述了C#使用linq对数组进行筛选排序的方法.分享给大家供大家参考.具体如下: using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace OrderQueryResults { class Program { static void Main(string[] args) { string[] names = {"kaka","kun

  • python NumPy ndarray二维数组 按照行列求平均实例

    我就废话不多说了,直接上代码吧! c = np.array([[1, 2, 3, 4], [4, 5, 6, 7], [7, 8, 9, 10]]) print(c.mean(axis=1))#行 print(c.mean(axis=0))#列 输出为: [ 2.5 5.5 8.5] [ 4. 5. 6. 7.] 以上这篇python NumPy ndarray二维数组 按照行列求平均实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们.

  • np.newaxis 实现为 numpy.ndarray(多维数组)增加一个轴

    如下所示: >> type(np.newaxis) NoneType >> np.newaxis == None True np.newaxis 在使用和功能上等价于 None,查看源码发现:newaxis = None,其实就是 None 的一个别名. 1. np.newaxis 的实用 >> x = np.arange(3) >> x array([0, 1, 2]) >> x.shape (3,) >> x[:, np.newa

  • vue实现单一筛选、删除筛选条件

    本文实例为大家分享了vue实现单一筛选.删除筛选条件的具体代码,供大家参考,具体内容如下 效果预览: 代码如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <script src="vue.v2.6.10.js"></scrip

随机推荐