首页 > 其他分享 >numpy-选择和过滤

numpy-选择和过滤

时间:2023-07-30 18:25:46浏览次数:33  
标签:False True 选择 print 过滤 arr2 arr1 np numpy

numpy-选择和过滤

目录

查找

np,where()

1、不带条件

返回tuple,第一个值是索引,第二个是空值

输入必须是 数组,不能是 list

输入一般是一维,行向量或者列向量都可以

2、带条件

np.where(condition, x, y)

满足条件(condition),输出x,不满足输出y

import numpy as np  
 
x = np.arange(9.).reshape(3,  3)  
print ('原数组:')
print (x)
print ( '大于 3 的元素的索引:')
y = np.where(x >  3)  
print (y)
print ('获取选择后的元素:')
print (x[y])

# 执行结果===========================
原数组:
[[0. 1. 2.]
 [3. 4. 5.]
 [6. 7. 8.]]
大于 3 的元素的索引:
(array([1, 1, 2, 2, 2], dtype=int64), array([1, 2, 0, 1, 2], dtype=int64))
获取选择后的元素:
[4. 5. 6. 7. 8.]


import numpy as np  
x = np.arange(9.).reshape(3,  3)  
a=np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

print(np.where(a < 5, a, 10*a))
[ 0  1  2  3  4 50 60 70 80 90]

np.extract()

where函数有一点相,不过extract函数是返回满足条件的元素

import numpy as np  
aa = np.arange(10)
print(np.extract(aa>8,aa))
# [9]

比较

比较是过滤的前提,因为通过比较才能确定过滤的条件。

数组和单个数字

import numpy as np

arr = np.random.randint(0, 10, (3, 3))
print(arr)
#运行结果
[[4 1 4]
 [7 6 1]
 [8 9 5]]

print(arr > 5)
#运行结果
[[False False False]
 [ True  True False]
 [ True  True False]]

数组和单个数字比较,也满足上一篇介绍的广播原则,也就是数组arr的每个元素都和数字5进行了比较。

比较的结果是和arr相同结构的数组,数组中的元素是bool值。 满足比较条件是True不满足比较条件的是False

数组和数组

除了和单个数字比较之外,数组之间也是可以比较的。

arr1 = np.random.randint(0, 10, (3, 3))
print(arr1)
#运行结果
[[9 7 3]
 [2 8 5]
 [2 2 3]]

arr2 = np.random.randint(0, 10, (3, 3))
print(arr2)
#运行结果
[[1 6 0]
 [0 1 8]
 [9 0 5]]

print(arr1 > arr2)
#运行结果
[[ True  True  True]
 [ True  True False]
 [False  True False]]

数组之间的比较就是相同位置的元素之间比较,如果两个数组的结构不一样,会按照上一篇介绍的广播计算方式来扩充数组。 比如:

arr1 = np.random.randint(0, 10, (3, 3))
print(arr1)
#运行结果
[[9 6 0]
 [1 4 9]
 [1 1 4]]

arr2 = np.random.randint(0, 10, (3, 1))
print(arr2)
#运行结果
[[1]
 [0]
 [9]]

print(arr1 > arr2)
#运行结果
[[ True  True False]
 [ True  True  True]
 [False False False]]

过滤

过滤就是根据掩码,选择出符合条件的元素。

所谓掩码就是相同维度的.布尔型数据
[[ True  True False]
 [ True  True  True]
 [False False False]]

单条件过滤

arr = np.random.randint(0, 10, (3, 3))
print(arr)
#运行结果
[[8 4 0]
 [2 2 9]
 [9 5 9]]

print(arr[arr > 5])
#运行结果
[8 9 9 9]

最后得到的是arr中值大于5的元素数组。 其中 arr > 5 的结果就是上一节提到的掩码,最后过滤出的元素就是根据这个掩码得到的。

arr1 = np.random.randint(0, 10, (3, 3))
print(arr1)
#运行结果
[[3 4 7]
 [4 6 2]
 [7 2 1]]

arr2 = np.random.randint(0, 10, (3, 3))
print(arr2)
#运行结果
[[2 3 1]
 [7 7 7]
 [1 6 4]]

print(arr1[arr1 > arr2])
#运行结果
[3 4 7 7]

多条件过滤

多条件过滤使用 &| 来连接不同的条件。

arr1 = np.random.randint(0, 10, (3, 3))
print(arr1)
#运行结果
[[1 0 5]
 [7 4 9]
 [8 5 4]]

arr2 = np.random.randint(0, 10, (3, 3))
print(arr2)
#运行结果
[[6 4 1]
 [0 1 1]
 [8 5 8]]

print(arr1[(arr1 > 5) & (arr1 > arr2)])
#运行结果
[7 9]

过滤arr1大于5** 并且 **对应位置比arr2大的元素。

arr1 = np.random.randint(0, 10, (3, 3))
print(arr1)
#运行结果
[[1 0 5]
 [7 4 9]
 [8 5 4]]

arr2 = np.random.randint(0, 10, (3, 3))
print(arr2)
#运行结果
[[6 4 1]
 [0 1 1]
 [8 5 8]]

print(arr1[(arr1 > 5) | (arr1 > arr2)])
#运行结果
[5 7 4 9 8]

过滤arr1大于5 或者对应位置比arr2大的元素。

标签:False,True,选择,print,过滤,arr2,arr1,np,numpy
From: https://www.cnblogs.com/tian777/p/17591777.html

相关文章

  • numpy-线代和矩阵
    numpy-线代和矩阵目录numpy-线代和矩阵创建(转换)矩阵矩阵运算np.linalg线代函数库np.matlib矩阵函数库参考资料创建(转换)矩阵一般我们先创建数组,然后将其转化为矩阵np.mat(data,dtype=None)data:数据或者数组dtype:数据格式importnumpyasnparr1=np.array(......
  • Java中过滤出ListA和ListB中字段相同的集合
    Java中过滤出ListA和ListB中age字段相同的User集合在Java中,List是一种常见的集合类型,它可以用来存储一组有序的数据。而对于List中存储的对象类型,我们可以使用泛型来进行限定。假设我们现在有两个List集合,分别为ListA和ListB,它们都存储了一些User对象。现在我们需要从这两个集合......
  • 【pandas小技巧】--按类型选择列
    本篇介绍的是pandas选择列数据的一个小技巧。之前已经介绍了很多选择列数据的方式,比如loc,iloc函数,按列名称选择,按条件选择等等。这次介绍的是按照列的数据类型来选择列,按类型选择列可以帮助你快速选择正确的数据类型,提高数据分析的效率。1.类型种类pandas列的数据类型主要有4......
  • VS选择Visual C++中的控制台项目和空项目、Windows桌面应用程序三者之间有什么区别?
    在VisualStudio中创建C/C++项目时,可以选择控制台项目、空项目和Windows桌面应用程序,它们有以下区别:控制台项目(ConsoleApplication):这种项目类型适用于命令行应用程序的开发。它提供一个命令行界面,可以在控制台中进行输入和输出操作,通常用于简单的控制台程序,如计算器、文件......
  • 模型选择 欠拟合与过拟合
    #模型选择欠拟合与过拟合#创建数据集frommxnetimportautogradfrommxnetimportndarrayasndfrommxnetimportgluonnum_train=100num_tset=100true_w=[1.2,-3.4,5.6]true_b=5.0#生成数据集X=nd.random_normal(shape=(num_train+num_tset......
  • xshell连接liunx服务器身份验证不能选择password
    ssh用户身份验证不能选择password 只能用publickey的解决办法 问题现象使用密码通过Workbench或SSH方式(例如PuTTY、Xshell、SecureCRT等)远程登录ECS实例时,遇到服务器禁用了密码登录方式错误. 可能原因该问题是由于SSH服务对应配置文件/etc/ssh/sshd_config中的参数Pa......
  • Switch选择结构
    Switch选择结构shift+tab:反向缩进tab:缩进打开项目结构快捷键:ctrl+Alt+Shift+s/IDEA窗口—>File—>ProjectStructure打开文件夹:OPenin然后点Explorer就文件夹了多选择结构还有一个实现方式就是switchcase语句。switchcase语句判断一个变量与一系列值中某个值是......
  • Spring应用网卡选择配置
    ignored-interfaces:##写上要忽略的虚拟网卡关键字-SangforaTrustVNIC......
  • 软件测试|Python科学计算神器numpy教程(十)
    numpy字符串处理简介NumPy是一个功能强大的Python库,主要用于科学计算和数据处理。除了处理数值数据外,NumPy还提供了一些强大的字符串处理功能。本文将介绍NumPy中常用的字符串处理函数,包括字符串拼接、切片、查找、替换等操作,展示NumPy在字符串处理方面的优势。字符串拼接NumPy提供......
  • 软件测试|Python科学计算神器numpy教程(十一)
    NumPy数学函数:强大的数值计算工具简介NumPy是Python中广受欢迎的科学计算库,提供了丰富的数学函数,可用于处理数组和矩阵中的数值数据。这些数学函数包含了许多常见的数学运算,如三角函数、指数函数、对数函数、统计函数等。本文将介绍NumPy中一些常用的数学函数及其用法,展示NumPy在数......