概要

图像(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. 菜鸟学Linux 第044篇笔记 算法和私有CA
  2. 微信小程序开发之选项卡
  3. View绘制--onMeasure() 、onLayout()
  4. extundelete安装_Linux下高效数据恢复软件extundelete应用实战
  5. linux包含绝对路径头文件,linux-kernel - 访问用户空间内存访问函数(如access_ok(),get_from_user())需要包含的头文件的确切路径。 - 堆栈内存溢出...
  6. linux中程序包管理方式出现的原由(转载)
  7. Quartz+Topshelf 作业
  8. 油猴脚本管理器使用指南
  9. 手机号码测试用例java_“邮箱”“验证码”“手机号码”输入框测试用例
  10. 渺小的个体不能体会之孤独
  11. JBX+WL8+Struts国际化中的一些问题
  12. UI设计师和美工有哪些区别?
  13. Linux配置sendmail实现PHP发送邮件
  14. 【美文欣赏】给爱子的信
  15. Docker 启动Redis
  16. 什么是响应式设计?响应式设计的基本原理是什么?如何做
  17. 跟着鸟哥学linux【一】
  18. 2018网易秋招编程题【彩色砖块】
  19. 程序猿如何理财之如何研究好一家上市公司?
  20. rownum与rowId

热门文章

  1. Kinect DK相机标定 RGB及Depth内参获取
  2. HBase原理详细概述
  3. 华工计算机研究生课程表,华南理工大学2018--2019学年度第一学期硕士研究生课程安排.doc...
  4. 操作系统页面置换算法之先进先出(FIFO)页面置换算法(C语言实现)
  5. fastjson 是反射吗_精细动作不好,孩子就语言发育迟缓,专家如是说|手拉反射|灵活性|语言|动作|迟缓|儿童|婴儿|...
  6. pho文件和目录操作
  7. odoo与企业微信深度集成
  8. expx和ln2泰勒展开的数值计算
  9. STM32 HAL库 实现基于SPI模式的SD卡、TF卡FATS文件系统+模拟U盘的应用笔记
  10. 这几款实用的软件推荐给你