Python--ndarray 常用属性详解
文章目录
- 1. 描述维度的属性--shape
- 1.1 改变原始数组的维度
- 1.2 视图变维
- 1.3 复制变维
- 2. 数组的索引操作--index
- 2.1 一维数组的索引切片
- 2.2 多维数组的切片
- 2.2.1 二维数组的切片
- 2.2.2 三维数组的切片
- 3. ndarray 掩码
- 3.1 布尔掩码
- 3.2 索引掩码
- 4. ndarray 的属性
1. 描述维度的属性–shape
1.1 改变原始数组的维度
改变原始数组的维度是直接对原数组进行修改。
import numpy as nparr = np.arange(1, 13)
print(arr)
print('-'*20)# 将数组改为二维数组, 四行三列
arr.shape = (4, 3)
print(arr)
print('-'*20)# 将数组改为二维数组, 三行四列
arr.resize(3, 4)
print(arr)
print('-'*20)# 将数组改为三维数组, 两页 每页两行三列arr.resize(2, 2, 3)
print(arr)
print('-'*20)# 将数组改为一维数组
arr.resize(arr.size)
print(arr)
1.2 视图变维
视图变维不会对原始数组进行修改,会返回一个新的 ndarray 数组,且新的 ndarray 数组与原始的 ndarray 数组共享数据源,即两个数组使用的数据元素是同一个。
import numpy as nparr = np.arange(1, 13)
print(arr)
print('-'*20)# 将数组改为二维数组, 四行三列
arr1 = arr.reshape(4, 3)
print(arr1)
print('-'*20)# 将数组改为三维数组, 两页 每页两行三列
arr1 = arr.reshape(2, 2, 3)
print(arr1)
print('-'*20)# 修改原始数组的元素
print(arr)
arr[0] = 100
print(arr)
print(arr1)
import numpy as nparr = np.arange(1, 13)
arr.resize(4, 3)
print(arr)
print('-'*20)# 将数组变成一维数组
# 后面的行拼接在前面行的末尾
arr1 = arr.ravel()
print(arr1)
print('-'*20)arr[0][0] = 1000
print(arr)
print(arr1)
1.3 复制变维
复制变维不会对原始数组进行修改,会返回一个新的 ndarray 数组,且新的 ndarray 数组与原始的 ndarray 数组的数据源相互独立,即两个数组使用的数据元素是不同的。
复制变维会完全复制出来一份新的数组,数据元素与原数组相同,只是新数组的维度不同。
import numpy as nparr = np.arange(1, 13)
arr.resize(4, 3)
print(arr)
print('-'*20)# 复制出来的数组为一维数组
arr1 = arr.flatten()
print(arr1)
print('-'*20)# 修改原始数组
arr[0][0] = 999
print(arr)
print(arr1)
2. 数组的索引操作–index
2.1 一维数组的索引切片
import numpy as nparr = np.arange(1, 13)
print(arr)
print('='*30)# 列表支持的切片操作 ndarray 都支持
print(arr[:3])
print(arr[3:])
print(arr[3:6])
print(arr[::2])
print(arr[::-1])
2.2 多维数组的切片
2.2.1 二维数组的切片
import numpy as nparr = np.arange(1, 13)
arr.resize(4, 3)
print(arr)
print('='*30)# 获取后两列的全部元素
# [行的切片, 列的切片]
print(arr[2:, :])
print('='*30)# 获取前两行的 1 3 列元素
print(arr[:2, ::2])
print('='*30)# 获取中间两行的前两列元素,
print(arr[1:3, 0:2])
2.2.2 三维数组的切片
import numpy as nparr = np.arange(1, 13)
arr.resize(2, 2, 3)
print(arr)
print('='*30)# [页的切片, 行的切片, 列的切片]
# 第二页第一行全部元素
print(arr[1:2, 0:1, :])
print('='*30)# 每页第一行的 1 3 列元素
print(arr[:, 0:1, ::2])
print('='*30)# 第二页每行的前两列元素,
print(arr[1:, :, :2])
3. ndarray 掩码
掩码是 numpy 提供的一种高效的过滤数组元素,获取原始数组子集的一种数组处理方法。
3.1 布尔掩码
一个与数据数组同维度的由布尔值组成的布尔数组,从原数组中选出在对应的布尔数组为 True 的元素。
import numpy as nparr = np.arange(1, 5)
print(arr)
print('='*30)mask = [True, False, True, False]
print(arr[mask])
import numpy as nparr = np.arange(1, 101)
print(arr)
print('=' * 30)# 从数组中选出奇数元素
# arr 中每个元素先与 2 进行运算,奇数对应的位置为 True,生成一个布尔数组
# 从原数组中选出对应位置为 True 的元素
print(arr[arr % 2 != 0])
3.2 索引掩码
有一个索引数组,索引数组中存放的为原数组各个元素对应的索引值,根据索引数组中的索引值取出对应的元素。
可以用于数组元素的排序
import numpy as nparr = np.array(['a', 'b', 'c', 'd', 'e', 'f'])
print(arr)
print('='*20)
index = np.arange(0,6,2)
print(index)
print(arr[index])
print('='*20)
index = [4,5,2,1,0,3]
print(index)
print(arr[index])
4. ndarray 的属性
属性 | 说明 |
---|---|
shape | 各个维度的元素数量 |
dtype | 元素类型 |
size | 元素数量 |
ndim | 维数 |
itemsize | 元素字节数 |
nbytes | 总字节数 |
real | 复数数组的实部数组 |
imag | 复数数组的虚部数组 |
T | 数组对象的转置视图 |
flat | 扁平迭代器 |
import numpy as nparr = np.array([[1+1j, 2+4j, 3+7j],[4+2j, 5+5j, 6+8j],[7+3j, 8+6j, 9+9j]
])
print(arr)
print('='*20)print(arr.shape)
print(arr.dtype)
print(arr.size)
print(arr.ndim)
print(arr.itemsize)
print(arr.nbytes)
print(arr.real)
print(arr.imag)
print(arr.T)
a = [x for x in arr.flat]
print(a)
Python--ndarray 常用属性详解相关推荐
- blankcount函数python,Python pandas常用函数详解
本文研究的主要是pandas常用函数,具体介绍如下. 1 import语句 2 文件读取 df = pd.read_csv(path='file.csv') 参数:header=None 用默认列名, ...
- python字符串常用函数-Python字符串常用函数详解
字符串相关操作大致总结以下9个部分,包括常用字符集合.大小写转换.判断字符元素类型.字符填充.字符串搜索.字符串替换.字符串添加.字符串修剪以及字符串分割. "字符串相关函数" & ...
- Python字符串常用函数详解
str.index(sub, start=None, end=None) 作用:查看sub是否在字符串中,在的话返回索引,且只返回第一次匹配到的索引:若找不到则报错:可以指定统计的范围,[start, ...
- 使用JAVA进行ad域身份验证常用属性详解
一些变态的公司经常对开发者提出一些变态的问题.比如在oa系统中,要求登录验证必须使用ad域进行登录.还有的如登录crm系统必须使用公司的阿里云邮箱账号进行身份验证等等. 作为程序员我们只能按照客户的需 ...
- MPAndroidChart—— pieChart 属性详解
MPAndroidChart GitHub 地址:https://github.com/PhilJay/MPAndroidChart pieChart 常用属性详解: [java] view plai ...
- python中文读音ndarray-numpy中的ndarray方法和属性详解
NumPy数组的维数称为秩(rank),一维数组的秩为1,二维数组的秩为2,以此类推.在NumPy中,每一个线性的数组称为是一个轴(axes),秩其实是描述轴的数量.比如说,二维数组相当于是一个一维数 ...
- python ndarray find_Python中Numpy ndarray的使用详解
python: numpy的ndarray和array有什么区别?为什么小编以为小编够坚强了,可还是敌不过你的执着你的冷酷. What is the difference between ndarra ...
- python对输入的字符串进行解析_python数据类型_字符串常用操作(详解)
这次主要介绍字符串常用操作方法及例子 1.python字符串 在python中声明一个字符串,通常有三种方法:在它的两边加上单引号.双引号或者三引号,如下: name = 'hello' name1 ...
- python的shutil模块是内置的_Python之shutil模块11个常用函数详解,python内置函数是什么...
Python之shutil模块11个常用函数详解,python内置函数是什么 shutil 是 Python 中的高级文件操作模块,与os模块形成互补的关系,os主要提供了文件或文件夹的新建.删除.查 ...
最新文章
- iOS 开发 OC编程 数组冒泡排序.图书管理
- Java 刷题必须了解的 API
- Oracle的登陆问题和初级学习增删改查(省略安装和卸载)
- Hibernate保存数据自动生成主键出现奇怪异常Duplicate entry '0' for key 1
- python top n排序
- Thread.sleep() SystemClock.sleep()
- 使用VMware安装CentOS7详请(自己做过测试)
- C# 以管理员身份运行程序
- php状态,PHP 状态模式 - 304158的个人空间 - OSCHINA - 中文开源技术交流社区
- python十进制转二进制,八进制和十六进制
- QT SQL使用指南
- 转载,对于已用encryption加密的存储过程,的解密方法
- 信鸽推送的集成AndroidStudio版本
- JAVA后端应该学什么技术?
- 什么是函数指针 ? 什么是指针函数? int (*P)( ) 和int *p()有什么区别
- java P1195 口袋的天空
- 制作一个类“全能扫描王”的简易扫描软件(opencv)
- JAVA系列 IO流 知识结构整理 建立合理的知识框架逻辑 输入输出流 理顺你的思维架构Fileoutput inputStream FileWriter FIleReader结构整理
- PKU C++课程期末编程题解答
- 宜信研发邮件POP3/SMTP测试