文章目录

  • 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 常用属性详解相关推荐

  1. blankcount函数python,Python pandas常用函数详解

    本文研究的主要是pandas常用函数,具体介绍如下. 1 import语句 2 文件读取 df = pd.read_csv(path='file.csv') 参数:header=None 用默认列名, ...

  2. python字符串常用函数-Python字符串常用函数详解

    字符串相关操作大致总结以下9个部分,包括常用字符集合.大小写转换.判断字符元素类型.字符填充.字符串搜索.字符串替换.字符串添加.字符串修剪以及字符串分割. "字符串相关函数" & ...

  3. Python字符串常用函数详解

    str.index(sub, start=None, end=None) 作用:查看sub是否在字符串中,在的话返回索引,且只返回第一次匹配到的索引:若找不到则报错:可以指定统计的范围,[start, ...

  4. 使用JAVA进行ad域身份验证常用属性详解

    一些变态的公司经常对开发者提出一些变态的问题.比如在oa系统中,要求登录验证必须使用ad域进行登录.还有的如登录crm系统必须使用公司的阿里云邮箱账号进行身份验证等等. 作为程序员我们只能按照客户的需 ...

  5. MPAndroidChart—— pieChart 属性详解

    MPAndroidChart GitHub 地址:https://github.com/PhilJay/MPAndroidChart pieChart 常用属性详解: [java] view plai ...

  6. python中文读音ndarray-numpy中的ndarray方法和属性详解

    NumPy数组的维数称为秩(rank),一维数组的秩为1,二维数组的秩为2,以此类推.在NumPy中,每一个线性的数组称为是一个轴(axes),秩其实是描述轴的数量.比如说,二维数组相当于是一个一维数 ...

  7. python ndarray find_Python中Numpy ndarray的使用详解

    python: numpy的ndarray和array有什么区别?为什么小编以为小编够坚强了,可还是敌不过你的执着你的冷酷. What is the difference between ndarra ...

  8. python对输入的字符串进行解析_python数据类型_字符串常用操作(详解)

    这次主要介绍字符串常用操作方法及例子 1.python字符串 在python中声明一个字符串,通常有三种方法:在它的两边加上单引号.双引号或者三引号,如下: name = 'hello' name1 ...

  9. python的shutil模块是内置的_Python之shutil模块11个常用函数详解,python内置函数是什么...

    Python之shutil模块11个常用函数详解,python内置函数是什么 shutil 是 Python 中的高级文件操作模块,与os模块形成互补的关系,os主要提供了文件或文件夹的新建.删除.查 ...

最新文章

  1. iOS 开发 OC编程 数组冒泡排序.图书管理
  2. Java 刷题必须了解的 API
  3. Oracle的登陆问题和初级学习增删改查(省略安装和卸载)
  4. Hibernate保存数据自动生成主键出现奇怪异常Duplicate entry '0' for key 1
  5. python top n排序
  6. Thread.sleep() SystemClock.sleep()
  7. 使用VMware安装CentOS7详请(自己做过测试)
  8. C# 以管理员身份运行程序
  9. php状态,PHP 状态模式 - 304158的个人空间 - OSCHINA - 中文开源技术交流社区
  10. python十进制转二进制,八进制和十六进制
  11. QT SQL使用指南
  12. 转载,对于已用encryption加密的存储过程,的解密方法
  13. 信鸽推送的集成AndroidStudio版本
  14. JAVA后端应该学什么技术?
  15. 什么是函数指针 ? 什么是指针函数? int (*P)( ) 和int *p()有什么区别
  16. java P1195 口袋的天空
  17. 制作一个类“全能扫描王”的简易扫描软件(opencv)
  18. JAVA系列 IO流 知识结构整理 建立合理的知识框架逻辑 输入输出流 理顺你的思维架构Fileoutput inputStream FileWriter FIleReader结构整理
  19. PKU C++课程期末编程题解答
  20. 宜信研发邮件POP3/SMTP测试

热门文章

  1. 设计模式-工厂模式-php
  2. 【HTML】div显示与隐藏相关内容
  3. php函数从数组中取出指定的数目,php截取数组的指定长度
  4. 了解epoll模型的作用原理
  5. 手机定位软件在破案中发挥的作用
  6. 【内测来袭】PerfDogService 一键搭建您的性能测试平台
  7. 解决legacy、uefi系统盘boot页面无法识别问题
  8. citp协议服务器,舞台融合科技多元素的7大基本条件
  9. 在QT中使用JSON
  10. 硬盘升级的理由 和老硬盘的处理