NumPy学习:NumPy(Numerical Python)基础(一)

在这里插入图片描述

1.什么是NumPy

  NumPy 是 Python 中用于科学计算的基础包。 它是一个 Python 库,提供多维数组对象, 各种派生对象(例如掩码数组和矩阵),以及 用于对阵列进行快速操作的各种例程,包括 数学、逻辑、形状操作、排序、选择、I/O、 离散傅里叶变换、基本线性代数、基本统计 操作、随机模拟等等。
  NumPy 包的核心是ndarray对象。这 封装同构数据类型的 N 维数组,其中 为了提高性能,在编译的代码中执行许多操作。 NumPy 数组和 标准 Python 序列:

  • 与 Python 列表不同,NumPy 数组在创建时具有固定大小 (可以动态增长)。更改 ndarray 的大小将 创建一个新数组并删除原始数组。
  • NumPy 数组中的元素都必须相同 数据类型,因此在内存中的大小将相同。例外情况: 可以有(Python,包括 NumPy)对象的数组,从而 允许不同大小元素的数组。
  • NumPy 数组有助于高级数学和其他类型的 对大量数据的操作。通常,此类操作是 与使用 Python 的内置序列。
  • 越来越多的基于 Python 的科学和数学 软件包使用 NumPy 数组;尽管这些通常支持 Python 序列输入,它们先将此类输入转换为 NumPy 数组 进行处理,并且它们经常输出 NumPy 数组。换言之, 为了有效地使用当今的大部分(甚至大部分)的 基于Python的科学/数学软件,只是知道如何 使用 Python 的内置序列类型是不够的 - 一个也是 需要知道如何使用 NumPy 数组。

2.如何导入NumPy

  将导入的名称缩短为了提高代码的可读性,这是一种广泛的约定,可使代码更具可读性。

import numpy as np

3.基础知识

  NumPy的主要对象是同构多为数组,是一个元素表(通常为数字),所有元素类型相同,由非负整数的元组索引。
  在NumPy维度中被称为。例如,3D空间中的点坐标[1,2,1]具有一个轴,该轴有3个元素,也说它的长度为3。

[[2,3,2],[1,3,2]]

  上面的例子中数组有2个轴,第一个轴表示行,长度为2;第二个轴表示列,长度为3,
  NumPy的数组类被称为ndarray,它的属性有:

  • ndarray.ndim: 数组的轴(维度)的个数。在Python世界中,维度的数量被称为rank。
  • ndarray.shape: 数组的维度。这是一个整数的元组,表示每个维度中数组的大小。对于有 n 行和 m 列的矩阵,shape 将是 (n,m)。因此,shape 元组的长度就是rank或维度的个数 ndim。
  • ndarray.size: 数组元素的总数。这等于 shape 的元素的乘积。
  • ndarray.dtype: 一个描述数组中元素类型的对象。可以使用标准的Python类型创建或指定dtype。另外NumPy提供它自己的类型。例如numpy.int32、numpy.int16和numpy.float64。
  • ndarray.itemsize: 数组中每个元素的字节大小。例如,元素为 float64 类型的数组的 itemsize 为8(=64/8),而 complex32 类型的数组的 itemsize 为4(=32/8)。它等于 ndarray.dtype.itemsize 。
  • ndarray.data: 该缓冲区包含数组的实际元素。通常,我们不需要使用此属性,因为我们将使用索引访问数组中的元素。
属性名称属性解释
ndarray.shape返回一个元组,其中包含ndarray对象的每个维度的大小
nbytes返回数组中所有元素所占用的字节数
ndarray.T返回数组的转置视图
ndarray.real返回数组实部的视图
ndarray.imag返回数组虚部的视图
ndarray.flat返回一个数组元素迭代器
ndarray.flags返回一个描述数组内存块信息的对象,例如是否为C或Fortran连续等
ndarray.strides返回每个维度中相邻元素的字节数组成的元组,也可以用于判断数组是否是连续的
ndarray.base如果数组是视图,则返回其基础数组,否则返回None
ndarray.ctypes返回表示数组内存块的ctypes对象
import numpy as np
arr = np.arange(15).reshape(3,5) #生成一个3行5列的数组对象arrprint(arr.ndim) # 输出 2  表示2个轴  行和列
print(arr.shape) # 输出(3,5) 表示3行5列
print(arr.size) # 输出15  表示元素的个数
print(arr.dtype.name) # 输出 int32
print(arr.itemsize) # 输出 4 

4.创建数组

  1)使用array函数从常规Python列表或元组中创建数组。
  得到的数组是从Python列表中元素推导出来的。

import numpy as np
arr1 = np.array([4,4,5]) # 创建一维数组
print(arr1.dtype.name)arr2 = np.array([[3,4,5],[6,7,8]]) # 创建二维数组
print(arr2.dtype.name)arr3 = np.array((1.1,3.14,5.0)) # 创建浮点数数组
print(arr3.dtype.name)

在这里插入图片描述

  2)数组的类型可以在创建时显示指定

import numpy as np
arr1 = np.array([[1,2],[3,4]],dtype= complex)
print(arr1)

在这里插入图片描述

  3)通常,数组的元素最初是未知的,但其大小是 已知。因此,NumPy 提供了几个函数来创建 具有初始占位符内容的数组。这些最大限度地减少了 不断增长的阵列,这是一项昂贵的操作。

import numpy as np
arr_empty = np.empty((3,2),dtype=np.float64)
arr_empty

在这里插入图片描述

import numpy as np
arr_zeros = np.zeros((3,2),dtype=np.int16)
arr_zeros

在这里插入图片描述

import numpy as np
arr_ones = np.ones((2,3),dtype = np.int16)
arr_ones

在这里插入图片描述
 4)为了创建数字序列,numpy提供了arange函数,可以生成一个数组。

import numpy as np
arr = np.arange(10,30,5)
print(arr)arr1 = np.arange(0.1,2,0.4)
print(arr1)

在这里插入图片描述
  当range与浮点数一起使用时,由于有限的浮点精度,通常不可能预测所获得的元素的数量,通常使用linspace函数生成想要的元素数量数组

import numpy as np
arr_floats = np.linspace(0,2,9)
print(arr_floats)arr_floats1 = np.linspace(0,2*np.pi,10)
print(arr_floats1)

在这里插入图片描述

5. 打印数组

  当打印数组时,NumPy以与嵌套列表类似的方式显示它,但具有以下布局:

  • 最后一个轴从左到右打印,
  • 倒数第二个从上到下打印,
  • 其余部分也从上到下打印,每个切片用空行分隔。

  然后将一维数组打印为行,将二维数据打印为矩阵,将三维数据打印为矩数组表。

import numpy as np
# 打印一维数组
arr1 = np.array([3,2,5])
print(arr1)# 打印二维数组
arr2 = np.arange(30).reshape(5,6)
print(arr2)# 打印三维数组
arr3 = np.arange(24).reshape(2,3,4)
print(arr3)

在这里插入图片描述
  如果数组太大而无法打印,NumPy会跳过数组的中间部分仅打印角点.
  如果要禁用此行为并强制numpy打印整个数组,可以更改打印选项:set_printoptions

np.set_printoptions(threshold=sys.maxsize)
import numpy as np
print(np.arange(10000))
print(np.arange(10000).reshape(100,100))

在这里插入图片描述

6.基本操作

6.1 数组间的运算符

  这些运算符使得可以方便的对数组进行各种数学和逻辑运算,而不必编写循环,在进行逐元素运算时,NumPy会自动将运算应用到数组的每个元素上。
  1) 算术运算符

  • “+” : 逐元素加法
  • “-” : 逐元素减法
  • “*” : 逐元素乘法
  • “/” : 逐元素除法
import numpy as nparr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])result1 = arr1 + arr2
print(result1)result2 = arr2 - arr1
print(result2)result3 = np.multiply(arr1, arr2)
print(result3)  # 输出: [4, 10, 18]result4 = arr1 * arr2
print(result4)  # 输出: [4, 10, 18]result5 = arr1 / arr2
print(result5)

在这里插入图片描述
2) 比较运算符

  • “==” : 逐元素相等。
  • “!=” : 逐元素不等。
  • “>”、“>=”、“<”、“<=” : 逐元素大于、大于等于、小于、小于等于。
import numpy as nparr1 = np.array([1, 2, 3])
arr2 = np.array([1, 5, 3])result = arr1 == arr2
print(result)  # 输出: [ True False  True]result1 = arr1 < arr2
print(result1)  # 输出: [ False  True False]

在这里插入图片描述
3) 逻辑运算符

  • “&” : 逐元素的按位与。
  • “|”、“^” :逐元素的按位或、按位异或
import numpy as nparr1 = np.array([True, True, False])
arr2 = np.array([True, False, False])result = arr1 | arr2
print(result)  # 输出: [ True False False]

4) 其他运算符

  • “**” : 逐元素的指数运算
  • “@”、“matmul()” : 执行矩阵乘法
import numpy as np
arr = np.array([1,2,3,4,5])
result = arr**2
print(result) # 输出 [ 1  4  9 16 25]
import numpy as npA = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])result = A @ B  # 或者 np.matmul(A, B)
print(result) # 输出 [[19 22] [43 50]]

参考

https://numpy.org/doc/stable/user/quickstart.html

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/257533.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DELL EMC unity 存储系统日志收集方法

对于一些非简单的硬件故障&#xff0c;解决故障最有效、最快速的方法就是收集日志&#xff0c;而不是瞎搞。常见的乱搞方法就是 1. reimage系统‘ 2. 更换控制器&#xff1b;3&#xff0c; 重启。 本文详细介绍了图形界面GUI和命令行CLI下如何收集DELL EMC Unity日志的方法和常…

PHP escapeshellarg()+escapeshellcmd()绕过

文章目录 函数利用escapeshellarg()函数escapeshellcmd()函数 exp执行原理攻击面例题 [BUUCTF 2018]Online Tool例题 [网鼎杯 2020 朱雀组]Nmap 函数利用 escapeshellarg()函数 单引号 ()&#xff1a;转义为 \。 双引号 (")&#xff1a;转义为 \"。 反斜杠 (\)&…

【Linux】Java 程序员必会的 Linux 最常用的命令

文章目录 lsllpwdcdtouchcatechomkdirtreermmvcpvimgreppsnetstat 各位读者好, 我是小陈, 这是我的个人主页, 希望我的专栏能够帮助到你: &#x1f4d5; JavaSE基础: 基础语法, 类和对象, 封装继承多态, 接口, 综合小练习图书管理系统等 &#x1f4d7; Java数据结构: 顺序表, 链…

《使用ThinkPHP6开发项目》 - 项目使用多应用开发

《使用ThinkPHP6开发项目》 - 安装ThinkPHP框架-CSDN博客 《使用ThinkPHP6开发项目》 - 设置项目环境变量-CSDN博客 安装完成ThinkPHP6项目后&#xff0c;项目默认生成为单应用&#xff0c;如需要使用多应用开发&#xff0c;则可按照下面步骤操作 1.删除app\controller文件夹…

21、命令执行

文章目录 一、命令执行概述1.1 基本定义1.2 原理1.3 两个条件1.4 命令执行漏洞产生的原因1.5 管道符号和通用命令符 二、远程命令执行2.1 远程命令执行相关函数2.2 远程命令执行漏洞的利用 三、系统命令执行3.1 相关函数3.2 系统命令执行漏洞利用 四、命令执行漏洞防御 一、命令…

vue的data

类型&#xff1a;Object | Function 限制&#xff1a;组件的定义只接受 function。 详细&#xff1a; Vue 实例的数据对象。Vue 会递归地把 data 的 property 转换为 getter/setter&#xff0c;从而让 data 的 property 能够响应数据变化。对象必须是纯粹的对象 (含有零个或多个…

将程序注册为系统服务

cmd中执行命令&#xff1a; sc create Redis binpath "C:\guet_run1\Redis-x64-5.0.14.1\redis-server.exe" type own start auto displayname "Redis"注意&#xff0c;命令中所有的等号和值之间需要一个空格&#xff08;等号前不要空格&#xff0c;等号后…

【设计模式-4.3】行为型——责任链模式

说明&#xff1a;本文介绍设计模式中行为型设计模式中的&#xff0c;责任链模式&#xff1b; 审批流程 责任链模式属于行为型设计模式&#xff0c;关注于对象的行为。责任链模式非常典型的案例&#xff0c;就是审批流程的实现。如一个报销单的审批流程&#xff0c;根据报销单…

Holynix

信息收集阶段 存活主机探测&#xff1a;arp-scan -l 当然了&#xff0c;正常来说我们不应该使用arp进行探测&#xff0c;arp探测的是arp的缓存表&#xff0c;我们应该利用nmap进行探测&#xff01; nmap -sT --min-rate 10000 192.168.182.0/24 端口探测 nmap -sT --min-rat…

hbuiler中使用npm安装datav

注&#xff1a;datav边框样式目前使用时&#xff1a;适用于网页&#xff0c;不适用于app 1、先安装node 安装、配置Node路径 2、为Node配置环境变量 3、在hbuilder的设置中填写node的路径 配置 4、打开cmd输入npm install jiaminghi/data-view 安装dataV&#xff0c;&…

Python 从入门到精通 学习笔记 Day02

Python 从入门到精通 第二天 今日目标 字符串基本操作、字符串序列操作、输入输出函数 字符串内置方法、运算符、练习之前学习的内容 一、字符串基本操作 在Python中&#xff0c;字符串的转义是指在字符串中使用特殊的字符序列来表示一些特殊字符。 在Python中&#xff0c;字…

网站建设app开发小程序制作|企业软件定制

网站建设app开发小程序制作|企业软件定制 网站建设和软件开发是现代社会非常重要的领域&#xff0c;它们对于企业、机构和个人来说都具有非常大的意义。随着移动互联网的快速发展&#xff0c;小程序制作也逐渐成为一种非常受欢迎的方式。 在过去&#xff0c;建立一个网站需要具…