Numpy教程——Array
文章目录
一.NumPy简介
1.什么是NumPy?
NumPy是一个用于处理数组的Python库。
它还具有在线性代数、傅里叶变换和矩阵域中工作的函数。
NumPy是特拉维斯·奥列芬特在2005年创建的。它是一个开源项目,可以免费使用。
2.为什么使用NumPy?
在Python中,我们有用于数组的列表,但它们的处理速度很慢。
NumPy的目标是提供一个比传统Python列表快50倍的数组对象。
NumPy中的数组对象称为ndarray
,它提供了许多支持函数,使用ndarray
非常容易。
数组在数据科学中非常常用,在数据科学中速度和资源非常重要。
3.为什么NumPy比Lists更快?
与列表不同,NumPy数组存储在内存中的一个连续位置,因此进程可以非常有效地访问和操作它们。
这种行为在计算机科学中称为局部性原理。
这就是NumPy比列表更快的主要原因。此外,它还进行了优化,以便与最新的CPU架构一起工作。
4.NumPy使用什么语言写的?
NumPy是一个Python库,部分是用Python编写的,但是需要快速计算的大部分是用C或c++编写的。
二.初步使用NumPy
1.导入并使用
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
print(arr)
结果:
2.查看NumPy的版本
版本字符串存储在__version__
属性中。
import numpy as np
print(np.__version__)
结果:
三.NumPy创建数组
1.创建一个NumPyndarray
对象
NumPy被用于处理数组。NumPy中的数组对象被称为ndarray
。
我们通过使用array()
方法创建一个ndarrat
对象。
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
print(arr)
print(type(arr))
结果:
要创建ndarray
,我们可以将list、tuple或任何类似数组的对象传入array()
方法,它将被转换为ndarray
对象:
import numpy as np
arr = np.array((1, 2, 3, 4, 5))
print(arr)
结果:
注意:多个传递进入np.array()
中的参数必须为序列。
若使用arr = np.array( 1, 2, 3, 4, 5 )
则报错。
并且若使用{}
传入set类型序列,则输出一个由{}
所夹的numpy数组:
import numpy as np
arr = np.array( {
1, 2, 3, 4, 5} )
print(arr)
print(type(arr))
结果:
传入List与Tuple的序列,输出都由[]
所夹的numpy数组:
2. numpy数组的维度
嵌套数组:以数组作为元素的数组。
1. 0维数组
0-D数组,或称标量,是数组中的元素。数组中的每个值都是0-D数组。
import numpy as np
arr = np.array(42)
print(arr)
结果:
2. 1维数组
以0-D数组为元素的数组称为一维数组。
这些是最常见和最基本的数组。
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
print(arr)
结果上文已描述
3. 二维数组
以一维数组为元素的数组称为二维数组。
这些常被用来表示矩阵或二阶张量。
NumPy有一个专门用于矩阵操作的完整子模块,称为
NumPy .mat
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
print(arr)
结果:
注意:需要保证两个一维数组的维度一致,不然报错。
arr = np.array([[1, 2, 3], [4, 5]])#报错
4.三维数组
以二维数组(矩阵)为元素的数组称为三维数组。
这些常被用来表示一个三阶张量。
import numpy as np
arr = np.array([[[1, 2, 3], [4, 5, 6]], [[1, 2, 3], [4, 5, 6]]])
print(arr)
结果:
5. 查看维度
NumPy Arrays提供了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)
结果:
6. 高维数组
数组可以有任意维数。
在创建数组时,可以使用ndmin
参数定义维度的数量。
注意区别ndim
与ndmin
。
import numpy as np
arr = np.array([1, 2, 3, 4], ndmin=5)
print(arr)
print('number of dimensions :', arr.ndim)
结果:
维度从低到高:从括号外层到内层
在这个数组的维度(第5维)有4个元素(1,2,3,4),
第4维有1个向量元素,
第3维有1个矩阵元素,
第2维有1个3维数组元素,
第1维有1个4维数组的元素。
四.NumPy数组索引
1.访问(一维)数组元素
NumPy数组中的索引从0开始,这意味着第一个元素的索引为0,第二个元素的索引为1,以此类推。
import numpy as np
arr = np.array([1, 2, 3, 4])
print(arr[2] + arr[3])
结果:
2. 访问二维数组
要访问二维数组中的元素,可以使用逗号分隔的整数表示元素的维数和索引。
可以将二维数组想象成一个具有行和列的表,其中行表示维,索引表示列。
import numpy as np
arr = np.array([[1,2,3,4,5], [6,7,8,9,10]]