概要

图像(Image)由称为 像素 (Pixel)的较小成分组成。 视频(Video)由多个 (Frame)组成,每个帧都不过是一幅图像。

目标

我们将获得一些使用各种 NumPy 函数的实际经验,这些函数用于创建 NumPy 数组并获取它们的形状。我们将使用 NumPy 的 0、1 和 rand 函数来创建数组。我们还将查看它们的数据类型和形状。

内容

来看看创建 NumPy 数组的四种方法:

  • 全 0 填充数组:np.zeros
  • 全 1 填充数组:np.ones
  • 随机数填充数组:np.random.rand
  • 指定值填充数组:np.array

函数有两个重要的参数:

  • 数组的形状。对于一个二维数组,这就是(行数,列数)。
  • 元素的数据类型。默认情况下,NumPy 使用 浮点数 作为其数据类型。对于图像,我们将使用不带正负号的 8 位整数(unsigned 8-bit integers)np.uint8。这背后的原因是 unsigned 8-bit integers 的范围是 0 到 255,这与像素值的范围相同。

譬如:我们要创建一个大小是 4x3 的全 0 填充数组,我们可以通过使用 np.zeros(4,3) 来实现。类似地,如果我们想创建一个全 1 填充的 4x3 数组,我们可以使用 np.ones(4,3)

有了 NumPy 数组之后,就可以使用 npArray.shape 查找数组的形状,其中 npArray是 NumPy 数组的名称。

import numpy as np # 导入NumPy模块# 创建一个5行6列的2D NumPy数组,用零填充
npArray = np.zeros((5,6)) print(npArray) # 输出刚刚创建的数组'''
[[0. 0. 0. 0. 0. 0.][0. 0. 0. 0. 0. 0.][0. 0. 0. 0. 0. 0.][0. 0. 0. 0. 0. 0.][0. 0. 0. 0. 0. 0.]]
'''print(npArray.dtype) # 输出数组元素的数据类型
# float64print(npArray.shape) # 输出数组的形状
# (5, 6)# 输出数组中的行数
print("数组中的行数(row) = {}".format(npArray.shape[0]))
# 输出数组中的列数
print("数组中的列数(columns) = {}".format(npArray.shape[1]))
'''
数组中的行数(row) = 5
数组中的列数(columns) = 6
'''

创建一个 5 行 6 列全 0 填充的数组

现在,我们将使用前面看到的其他命令来创建大小相同的数组,即(5,6),并且指定数据类型(np.uint8)。 让我们创建一个全 10填充的数组。

# 创建一个全1填充的数组,形状大小为(5,6),数据类型为(np.uint8)
npArray = np.ones((5,6), dtype=np.uint8)  print(npArray) # 输出刚刚创建的数组
'''
[[0 0 0 0 0 0][0 0 0 0 0 0][0 0 0 0 0 0][0 0 0 0 0 0][0 0 0 0 0 0]]
'''print(npArray.dtype) # 输出数组元素的数据类型
# uint8print(npArray.shape) # 输出数组的形状
# (5, 6)# 输出数组中的行数
print("数组中的行数(row) = {}".format(npArray.shape[0]))
# 输出数组中的列数
print("数组中的列数(columns) = {}".format(npArray.shape[1]))
'''
数组中的行数(row) = 5
数组中的列数(columns) = 6
'''

创建随机数填充数组

我们将创建一个用随机数填充的数组。 请注意,在构建由随机数填充的数组时,我们无法指定数据类型。

# 创建一个随机数填充的数组,形状大小同样是(5,6)
npArray = np.random.rand(5,6)  print(npArray) # 输出刚刚创建的数组'''
[[0.76493029 0.4244641  0.96668388 0.87860886 0.00654919 0.46697776][0.20844501 0.40487349 0.51814253 0.06393495 0.21362829 0.64340518][0.8480972  0.65643116 0.08282768 0.09566009 0.90510305 0.74211234][0.64052005 0.85885759 0.48681204 0.73636393 0.65345601 0.2980164 ][0.37037381 0.28148836 0.15755969 0.32690712 0.56888984 0.16034325]]
'''

创建指定值填充数组

# 创建指定值填充数组
npArray = np.array([[1,2,3,4,5,6],[7,8,9,10,11,12],[13,14,15,16,17,18],[19,20,21,22,23,24],[25,26,27,28,29,30]],dtype=np.uint8)print(npArray) # 输出刚刚创建的数组'''
[[ 1  2  3  4  5  6][ 7  8  9 10 11 12][13 14 15 16 17 18][19 20 21 22 23 24][25 26 27 28 29 30]]
'''

小结

我们看到了如何使用不同的函数创建 NumPy 数组,如何指定其数据类型以及如何显示其形状。

1、创建numpy数组相关推荐

  1. [云炬python3玩转机器学习笔记] 3-4创建Numpy数组和矩阵

    其他创建 numpy.array的方法 np.zeros(10) array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0.]) np.zeros(10).dtype ...

  2. python观察日志(part25)--创建numpy数组

    学习笔记,仅供参考,有错必纠 按需更新 numpy中的数组 创建数组 # 构造正态矩阵 np.random.normal(0, 1, (4, 4)) array([[ 0.37736985, -0.2 ...

  3. 05NumPy--5.2创建NumPy数组

    #语法:array([列表]/(元祖)) import numpy as np a = np.array([1,2,3,3]) print(a) print(type(a

  4. python笔记3(numpy数组)

    记录python听课笔记 文章目录 记录python听课笔记 一,数组创建 1.创建NumPy数组 1.1一维数组和二维数组的创建和访问 1.2三维数组 1.3数组元素的数据类型 1.4arange( ...

  5. NumPy 数组对象

    NumPy 数组对象 # 来源:NumPy Essentials ch2 数组索引和切片 # 创建 100x100 个 0~1 随机数 x = np.random.random((100, 100)) ...

  6. NumPy Essentials 带注释源码 二、NumPy 数组对象

    # 来源:NumPy Essentials ch2 数组索引和切片 # 创建 100x100 个 0~1 随机数 x = np.random.random((100, 100)) # 取第 42 行 ...

  7. c语言转换为python语言_使用C语言中的数据缓冲区和NumPy数组之间的转换来为Python接口打包C程序的最佳方法是什么?...

    基本上有三种方式: >从图像缓冲区复制到NumPy阵列,反之亦然.当给定C/C++图像时,创建NumPy阵列并复制数据,当给定NumPy阵列时,创建C/C++图像并复制数据. > NumP ...

  8. Python数据分析与可视化——NumPy数组

    NumPy数组 创建NumPy数组除了可以使用底层Ndarray构造器来创建外,也可以通过以下3种方式来创建. 1.numpy.empty() 方法 该方法用来创建一个指定形状(shape).数据类型 ...

  9. c语言随机生成整数存放一维数组_文科生学 Python 系列 7: Numpy 数组/索引和切片...

    第四课:本课内容: • 0. 导入 NumPy 包 • 1. 创建 NumPy 数组 • 2. 索引和切片 • 3. 读取文件 • 4. 布尔型索引 • 5. 数组的运算 • 6. 常用函数举例 Nu ...

最新文章

  1. java 配置文件书写_配置文件的写法(properties类型)
  2. Cisco2811基本操作
  3. Java开发中文件读取方式总结
  4. boost::geometry::disjoint用法的测试程序
  5. 洛谷 P1091 合唱队型
  6. PowerShell实现批量收集SCVMM中虚拟机IP-续
  7. 【acwing210 异或运算】
  8. java jcombobox 获取值_从java中的JComboBox获取字符串值
  9. Entity framework 配置文件,实现类,测试类
  10. 阶段1 语言基础+高级_1-3-Java语言高级_07-网络编程_第2节 TCP协议_2_TCP通信的概述(下)...
  11. 杭电数据结构课程实践-哈密顿图的判断
  12. c语言中存储器的绝对地址,51单片机C语言编程中对单片机绝对地址访问的两种方法...
  13. Vue 富文本编辑器
  14. springboot 整合 邮件发送
  15. 时间复杂度和空间复杂度(超详细)
  16. 《HarmonyOS开发 – OpenHarmony开发笔记(基于小型系统)》第1章 OpenHarmony与Pegasus物联网开发套件简介
  17. android序列帧动画纯代码,H5序列帧动画实现过程(附源码)
  18. Xilinx SDx 2018.3安装
  19. 分享4个自媒体热门领域,选对了收入翻3倍
  20. Vue routers

热门文章

  1. kinect dk人体识别与姿势对比
  2. [财务报销]集团公司预算控制与网上费用报销系统
  3. linux文件夹 压缩效率,Linux 高压缩率工具 XZ 压缩详解
  4. Linux下的/etc/crontab文件和crontab -e命令区别及Crontab命令详解(转)
  5. 如何区分WS_POPUP、WS_OVERLAPPED和WS_CHILD
  6. Tanzu 实践安装手册-图文并茂-最新最全面之一
  7. Android使用低功耗蓝牙BLE进行简单通信
  8. Echarts矩形树图
  9. 视觉识别(Visual Recognition)-- 总结
  10. 中国人为何勤劳却不富有?