我的编程空间,编程开发者的网络收藏夹
学习永远不晚

NumPy中掩码数组怎么创建

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

NumPy中掩码数组怎么创建

本篇内容主要讲解“NumPy中掩码数组怎么创建”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“NumPy中掩码数组怎么创建”吧!

1. 介绍

numpy.ma子模块通过引入掩码数组提供了一种解决数据缺失或无效问题的安全、便捷的方法。numpy.ma子模块的主体是MaskedArray类,他是numpy.ndarray的派生类,可以把numpy.ma子模块当做ndarray来用,且无须考虑数组的无效值是否会给操作带来无法预制的意外

2. 创建掩码数组

import numpy as npimport numpy.ma as ma

2.1 由列表生成掩码数组

掩码数组子模块的ma.array()函数和Numpy的np.array()函数类似,可以直接将列表生成掩码数组,默认mask参数为False,生成的数组类型是MaskedArray类。数组掩码梳理后,无论是查找最大值、最小值,还是计算均值、方差,都不用再担心数据是否无效的问题了

import numpy as npimport numpy.ma as maa = ma.array([0, 1, 2, 3], mask=[0, 0, 1, 0]) # 指定第3个元素无效print(a)print(type(a))print(a.min(), a.max(), a.mean(), a.var())

2.2 由数组生成掩码数组

ma.asarray()函数可以将普通的NumPy数组转成掩码数组。新生成的掩码数组不会对原数组中的np.nan或np.inf做掩码处理,但是会相应调整填充值(fill_value)

import numpy as npimport numpy.ma as maa = np.arange(5)print(ma.asarray(a))a = np.array([1, np.nan, 2, np.inf, 3]) # 包含特殊值的数组print(ma.asarray(a))

2.3 对数组中的无效值做掩码处理

ma.asarray()函数不会对原数组中的np.nan或np.inf做掩码处理,ma.masked_invalid()函数则可以实现这个功能

import numpy as npimport numpy.ma as maa = np.array([1, np.nan, 2, np.inf, 3])print(ma.masked_invalid(a))

2.4 对数组中的给定值做掩码处理

有时需要将数组中的某个给定值设置为无效(掩码),ma.masked_equal()函数可以实现这个功能

import numpy as npimport numpy.ma as maa = np.arange(3).repeat(2)print(ma.masked_equal(a, 1)) # 对数组元素1做掩码

2.5 对数组中符合条件的特定值做掩码处理

有时需要将数组中符合条件的某些特定值设置为无效(掩码),掩码数组子模块提供了若干函数实现条件掩码。这些可能的筛选条件包括大于、大于等于、小于、小于等于、区间内、区间外等6中。

import numpy as npimport numpy.ma as maa = np.arange(8)print(ma.masked_greater(a, 4)) # 掩码大于4的元素print(ma.masked_greater_equal(a, 4)) # 掩码大于等于4的元素print( ma.masked_less(a, 4)) # 掩码小于4的元素print(ma.masked_less_equal(a, 4)) # 掩码小于等于4的元素print(ma.masked_inside(a, 2, 5)) # 掩码 [2,5]之间的元素print(ma.masked_outside(a, 2, 5)) # 掩码 [2,5]之外的元素

2.6 用一个数组的条件筛选结果对另一个数组做掩码处理

a和b是两个结构相同的数组,如果用a>5的条件对数组b掩码,上面那些函数就失效了。这种情况可以使用ma.masked_where()函数,该函数也可以对数组自身掩码

import numpy as npimport numpy.ma as maa = np.arange(8)b = np.random.random(8)print( ma.masked_where(a>5, b)) # 用a>5的条件掩码数组b

3. 访问掩码数组

3.1 索引和切片

因为掩码数组MaskedArray类是numpy.ndarray的派生类,所以那些用在普通NumPy数组上的索引和切片操作也依然有效

import numpy as npimport numpy.ma as maa = np.array([1, np.nan, 2, np.inf, 3])a = ma.masked_invalid(a)print(a[0], a[1], a[-1])print(a[1:-1])

3.2 函数应用

掩码数组内置方法的使用和普通数组没有区别。使用NumPy命名空间的函数则要慎重,如果掩码数组子模块有对应函数,应优先使用数组子模块的对应函数。例如,对掩码数组求正弦,如果使用np.sin()函数,会发出警告信息;如果使用ma.sin()函数,则无任何问题

import numpy as npimport numpy.ma as maa = np.array([1, np.nan, 2, np.inf, 3])a = ma.masked_invalid(a)print(a.min(), a.max(), a.mean(), a.var())#print(np.sin(a)) # 虽然可以执行,但会弹出警告print(ma.sin(a)) # 这才是正确的用法

3.3 掩码数组转为普通数组

任何情况下,我们都可以通过掩码数组的data属性来获得掩码数组的数据视图,其类型就是np.ndarray数组。另外,还可以使用掩码数组的__array__()函数或ma.getdata()函数来获取掩码数组的数据视图。上述三种方法获得数据视图的操作,本质上都是操作掩码的数组本身。如果需要数据视图副本,需使用copy()函数

import numpy as npimport numpy.ma as maa = ma.array([1, np.nan, 2, np.inf, 3])print(a)x = a.datay = a.__array__()z = ma.getdata(a)w = np.copy(a.__array__()) # 复制数据视图print(x)print(y)print(z)print(w)a[-1] = 9print(x)print(y)print(z)print(w)

3.4 修改掩码

通过掩码数组的mask属性可以查看当前数组的掩码情况,其代码如下。通常,数组的掩码是一个布尔型数组,或是一个布尔值

import numpy as npimport numpy.ma as maa = ma.masked_invalid(np.array([1, np.nan, 2, np.inf, 3]))print(a.mask)

如果要对数组切片掩码或对数组的某个元素掩码,直接令该切片或该元素等于ma.masked常量即可

import numpy as npimport numpy.ma as maa = ma.masked_invalid(np.array([1, np.nan, 2, np.inf, 3]))print(a.mask)print(a)a[:2] = ma.maskedprint(a)

如果要撤销对数组切片或数组中的某个元素的掩码,只需要对该切片或该元素做赋值操作即可

import numpy as npimport numpy.ma as maa = ma.masked_invalid(np.array([1, np.nan, 2, np.inf, 3]))a[1] = 1.5a[2:4] = 5print(a)

到此,相信大家对“NumPy中掩码数组怎么创建”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

NumPy中掩码数组怎么创建

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

NumPy中掩码数组怎么创建

本篇内容主要讲解“NumPy中掩码数组怎么创建”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“NumPy中掩码数组怎么创建”吧!1. 介绍numpy.ma子模块通过引入掩码数组提供了一种解决数据缺
2023-07-05

numpy中的掩码数组如何使用

本篇内容介绍了“numpy中的掩码数组如何使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!numpy中有一个掩码数组的概念,需要通过子模块
2023-07-05

python中怎么用numpy创建二维数组

你可以使用numpy的`array`函数来创建二维数组。以下是一个使用numpy创建二维数组的示例代码:```pythonimport numpy as np# 创建一个2x3的二维数组arr = np.array([[1, 2, 3],
2023-08-31

怎么在python中创建一个numpy数组

本篇文章为大家展示了怎么在python中创建一个numpy数组,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。python可以做什么Python是一种编程语言,内置了许多有效的工具,Python几乎无
2023-06-14

怎么在Python中使用numpy创建空数组

怎么在Python中使用numpy创建空数组?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。一、问题描述:有一个shape为(308, 2)的二维数组,以及单独的
2023-06-15

java中怎么创建数组

Java中创建数组的方法:说明:这里以int为数据类型,以arr为数组名来演示。一、声明并赋值int[] arr = {1,2,4, …};注意:这里的花括号不是语句块,而且而且花括号后的分号也不能省。二、声明数组名开辟空间并且赋值int[] arr;arr
java中怎么创建数组
2020-05-18

javascript中怎么创建数组

这篇文章将为大家详细讲解有关javascript中怎么创建数组,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。在js中,可以使用array方法创建数组,具体方法为:1、通过构造函数创建数组,语法格式为“le
2023-06-15

PHP中怎么创建array数组

这篇文章给大家介绍PHP中怎么创建array数组,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。PHP数组函数库新建数组使用arrayarray array ( [mixed ...] )返回根据参数建立的数组。参数可以
2023-06-17

java中的string数组怎么创建

在Java中创建一个String数组,可以使用以下两种方式:1. 使用数组字面量进行初始化:```javaString[] array = {"value1", "value2", "value3"};```2. 使用new关键字创建一个指
2023-08-26

Python创建二维数组的代码怎么写

在Python中,可以使用列表嵌套的方式创建一个二维数组。以下是一些常见的创建二维数组的代码示例:1. 使用嵌套循环初始化二维数组。```python# 创建一个3x3的二维数组并初始化为0rows = 3cols = 3arr = [[0
2023-08-31

PHP中数组怎么创建和使用

本文小编为大家详细介绍“PHP中数组怎么创建和使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“PHP中数组怎么创建和使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、创建数组在PHP中,有两种方式来创建数
2023-07-05

Shell中怎么创建序列和数组

Shell中怎么创建序列和数组,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。一、seq方法生成:[chengmo@centos5 shell]$ aNumList=$(seq
2023-06-09

C#中怎么创建和操作数组

在C#中,您可以使用以下方式创建和操作数组:创建数组:int[] numbers = new int[5]; // 创建一个包含5个整数的数组string[] names = new string[3]; // 创建一个包含3个字符串的数
C#中怎么创建和操作数组
2024-03-07

​C#怎么创建String数组

在C#中,你可以使用以下代码来创建一个字符串数组:string[] array = new string[3]; // 创建一个长度为3的字符串数组// 为数组的元素赋值array[0] = "Hello";array[1] = "
​C#怎么创建String数组
2023-10-30

Java中怎么声明和创建数组

这篇文章主要介绍了Java中怎么声明和创建数组的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Java中怎么声明和创建数组文章都会有所收获,下面我们一起来看看吧。数组数组 (Array) 是有序数据的集合, 在
2023-06-29

VB中怎么创建和使用数组

在VB中,可以使用Dim语句来声明和初始化数组,然后使用数组变量来访问数组元素。以下是一个简单的示例:Dim myArray(4) As IntegermyArray(0) = 1myArray(1) = 2myArray(2) =
VB中怎么创建和使用数组
2024-04-03

Python中怎么创建元组

Python中怎么创建元组,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。创建及访问>>> mytuple=(1,2,3,4,a) >>> mytuple (1, 2,
2023-06-17

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录