NumPy 简介
什么是 NumPy?
NumPy 是用于处理数组的 python 库。
它还拥有在线性代数、傅立叶变换和矩阵领域中工作的函数。
NumPy 由 Travis Oliphant 于 2005 年创建。它是一个开源项目,您可以自由使用它。
NumPy 指的是数值 Python(Numerical Python)。
为何使用 NumPy?
在 Python 中,我们有满足数组功能的列表,但是处理起来很慢。
NumPy 旨在提供一个比传统 Python 列表快 50 倍的数组对象。
NumPy 中的数组对象称为 ndarray
,它提供了许多支持函数,使得利用 ndarray
非常容易。
数组在数据科学中非常常用,因为速度和资源非常重要。
数据科学:计算机科学的一个分支,研究如何存储、使用和分析数据以从中获取信息。
为什么 NumPy 比列表快?
与列表不同,NumPy 数组存储在内存中的一个连续位置,因此进程可以非常有效地访问和操纵它们。
这种行为在计算机科学中称为引用的局部性。
这是 NumPy 比列表更快的主要原因。它还经过了优化,可与最新的 CPU 体系结构一同使用。
NumPy 用哪种语言编写?
NumPy 是一个 Python 库,部分用 Python 编写,但是大多数需要快速计算的部分都是用 C 或 C ++ 编写的。
安装 NumPy
如果您已经在系统上安装了 Python 和 PIP,那么安装 NumPy 非常容易。
请使用这条命令安装它:
C:\Users\Your Name>pip install numpy
导入 NumPy
安装 NumPy 后,通过添加 import
关键字将其导入您的应用程序:
import numpy
现在,Numpy 已导入并可以使用。
实例
import numpy arr = numpy.array([1, 2, 3, 4, 5]) print(arr)
NumPy as np
NumPy 通常以 np
别名导入。
别名:在 Python 中,别名是用于引用同一事物的替代名称。
请在导入时使用 as
关键字创建别名:
import numpy as np
现在,可以将 NumPy 包称为 np
而不是 numpy
。
实例
import numpy as np arr = np.array([1, 2, 3, 4, 5]) print(arr)
检查 NumPy 版本
版本字符串存储在 __version__
属性中。
实例
import numpy as np print(np.__version__)
创建 NumPy ndarray 对象
NumPy 用于处理数组。 NumPy 中的数组对象称为 ndarray
。
我们可以使用 array()
函数创建一个 NumPy ndarray
对象。
实例
import numpy as np arr = np.array([1, 2, 3, 4, 5]) print(arr) print(type(arr))
type(): 这个内置的 Python 函数告诉我们传递给它的对象的类型。像上面的代码一样,它表明 arr
是 numpy.ndarray
类型。
要创建 ndarray
,我们可以将列表、元组或任何类似数组的对象传递给 array()
方法,然后它将被转换为 ndarray
:
实例
使用元组创建 NumPy 数组:
import numpy as np arr = np.array((1, 2, 3, 4, 5)) print(arr)
数组中的维
数组中的维是数组深度(嵌套数组)的一个级别。
嵌套数组:指的是将数组作为元素的数组。
0-D 数组
0-D 数组,或标量(Scalars),是数组中的元素。数组中的每个值都是一个 0-D 数组。
实例
用值 61 创建 0-D 数组:
import numpy as np arr = np.array(61) print(arr)
1-D 数组
其元素为 0-D 数组的数组,称为一维或 1-D 数组。
这是最常见和基础的数组。
实例
创建包含值 1、2、3、4、5、6 的 1-D 数组:
import numpy as np arr = np.array([1, 2, 3, 4, 5, 6]) print(arr)
2-D 数组
其元素为 1-D 数组的数组,称为 2-D 数组。
它们通常用于表示矩阵或二阶张量。
NumPy 有一个专门用于矩阵运算的完整子模块 numpy.mat
。
实例
创建包含值 1、2、3 和 4、5、6 两个数组的 2-D 数组:
import numpy as np arr = np.array([[1, 2, 3], [4, 5, 6]]) print(arr)
检查维数?
NumPy 数组提供了 ndim
属性,该属性返回一个整数,该整数会告诉我们数组有多少维。
实例
检查数组有多少维:
import numpy as np a = np.array(42) b = np.array([1, 2, 3, 4, 5]) c = np.array([[1, 2, 3], [4, 5, 6]]) d = np.array([[[1, 2, 3], [4, 5, 6]], [[1, 2, 3], [4, 5, 6]]]) print(a.ndim) print(b.ndim) print(c.ndim) print(d.ndim)
NumPy 数组索引
访问数组元素
数组索引等同于访问数组元素。
您可以通过引用其索引号来访问数组元素。
NumPy 数组中的索引以 0 开头,这意味着第一个元素的索引为 0,第二个元素的索引为 1,以此类推。
实例
从以下数组中获取第一个元素:
import numpy as np arr = np.array([1, 2, 3, 4]) print(arr[0])
实例
从以下数组中获取第二个元素:
import numpy as np arr = np.array([1, 2, 3, 4]) print(arr[1])
实例
从以下数组中获取第三和第四个元素并将其相加:
import numpy as np arr = np.array([1, 2, 3, 4]) print(arr[2] + arr[3])
NumPy 数据类型
Python 中的数据类型
默认情况下,Python 拥有以下数据类型:
strings - 用于表示文本数据,文本用引号引起来。例如 "ABCD"。
integer - 用于表示整数。例如 -1, -2, -3。
float - 用于表示实数。例如 1.2, 42.42。
boolean - 用于表示 True 或 False。
complex - 用于表示复平面中的数字。例如 1.0 + 2.0j,1.5 + 2.5j。
NumPy 中的数据类型
NumPy 有一些额外的数据类型,并通过一个字符引用数据类型,例如 i
代表整数,u
代表无符号整数等。
以下是 NumPy 中所有数据类型的列表以及用于表示它们的字符。
i - 整数
b - 布尔
u - 无符号整数
f - 浮点
c - 复合浮点数
m - timedelta
M - datetime
O - 对象
S - 字符串
U - unicode 字符串
V - 固定的其他类型的内存块 ( void )
检查数组的数据类型
NumPy 数组对象有一个名为 dtype
的属性,该属性返回数组的数据类型:
实例
获取数组对象的数据类型
import numpy as np arr = np.array([1, 2, 3, 4]) print(arr.dtype)
实例
获取包含字符串的数组的数据类型:
import numpy as np arr = np.array(['apple', 'banana', 'cherry']) print(arr.dtype)
用已定义的数据类型创建数组
我们使用 array()
函数来创建数组,该函数可以使用可选参数:dtype
,它允许我们定义数组元素的预期数据类型:
实例
用数据类型字符串创建数组:
import numpy as np arr = np.array([1, 2, 3, 4], dtype='S') print(arr) print(arr.dtype)
对于 i
、u
、f
、S
和 U
,我们也可以定义大小。
实例
创建数据类型为 4 字节整数的数组:
import numpy as np arr = np.array([1, 2, 3, 4], dtype='i4') print(arr) print(arr.dtype)
转换已有数组的数据类型
更改现有数组的数据类型的最佳方法,是使用 astype() 方法复制该数组。
astype() 函数创建数组的副本,并允许您将数据类型指定为参数。
数据类型可以使用字符串指定,例如 'f' 表示浮点数,'i' 表示整数等。或者您也可以直接使用数据类型,例如 float 表示浮点数,int 表示整数。
实例
通过使用 'i' 作为参数值,将数据类型从浮点数更改为整数:
import numpy as np arr = np.array([1.1, 2.1, 3.1]) newarr = arr.astype('i') print(newarr) print(newarr.dtype)