NumPy新手入門教程:輕松掌握數(shù)組操作
NumPy是一个强大的Python库,用于处理大型多维数组和矩阵,并提供了丰富的数学函数。本文将详细介绍NumPy的核心功能,包括数组操作、内置函数和线性代数运算等。此外,还将介绍如何安装和导入NumPy库,并演示创建和操作数组的各种方法。通过本文,你将能够轻松掌握NumPy的基本使用技巧。
NumPy新手入门教程:轻松掌握数组操作 NumPy简介什么是NumPy
NumPy(Numerical Python的简称)是一个Python的开源库,用于处理大型多维数组与矩阵,并提供了大量用于数组操作的数学函数。NumPy是Python科学计算的基础库之一,广泛应用于数据分析、科学计算等领域。NumPy不仅提供了高效的数组对象,还提供了一系列的数学计算功能,例如线性代数、傅里叶变换、随机数生成等。
NumPy的主要特点
-
数组对象:NumPy的核心是
ndarray
,即n维数组对象。ndarray
对象可以进行各种数学运算、切片、选择及形状变换。NumPy中的数组对象可以高效地处理大量数据。 -
内置函数:NumPy提供了大量的内置函数,如
sin
、cos
、exp
等,这些函数可以应用于整个数组,并且它们通常比纯Python实现更快。 -
广播机制:NumPy支持广播机制,即不同的数组间可以进行操作,即使它们的形状和大小不同,也能进行运算。
-
线性代数运算:NumPy提供了用于矩阵操作的线性代数函数,例如矩阵乘法、逆矩阵、行列式等。
- 随机数生成:NumPy支持生成各种分布的随机数,如正态分布、泊松分布等,这对于模拟和机器学习非常有用。
安装与导入NumPy
要开始使用NumPy,首先需要安装NumPy库。可以通过Python的包管理工具pip来安装NumPy。
pip install numpy
安装完成后,可以通过import
语句导入NumPy库。
import numpy as np
创建NumPy数组
一维数组的创建
一维数组是一行数据的集合,可以通过np.array()
函数直接创建。
import numpy as np
array_1d = np.array([1, 2, 3])
print(array_1d)
输出:
[1 2 3]
二维数组的创建
二维数组是一个表格形式的数据集合,可以通过嵌套列表或直接使用np.array()
函数创建。
import numpy as np
array_2d = np.array([[1, 2, 3], [4, 5, 6]])
print(array_2d)
输出:
[[1 2 3]
[4 5 6]]
生成特定模式的数组
NumPy提供了多种函数来创建具有特定模式的数组。
使用arange()
创建数组
arange()
函数类似于Python的range()
函数,可以生成一个指定范围内的数组。
import numpy as np
array_arange = np.arange(0, 5)
print(array_arange)
输出:
[0 1 2 3 4]
使用linspace()
创建数组
linspace()
函数用于创建一个指定数量的等间距的数组。
import numpy as np
array_linspace = np.linspace(0, 1, 5)
print(array_linspace)
输出:
[0. 0.25 0.5 0.75 1. ]
使用zeros()、ones()和empty()
创建数组
import numpy as np
# 使用zeros()创建数组
array_zeros = np.zeros((2, 3))
print(array_zeros)
# 使用ones()创建数组
array_ones = np.ones((2, 3))
print(array_ones)
# 使用empty()创建数组
array_empty = np.empty((2, 3))
print(array_empty)
输出:
[[0. 0. 0.]
[0. 0. 0.]]
[[1. 1. 1.]
[1. 1. 1.]]
[[0. 0. 0.]
[0. 0. 0.]]
数组的基本操作
数组索引与切片
NumPy数组支持和Python列表类似的索引和切片操作。
索引
import numpy as np
array_1d = np.array([1, 2, 3, 4, 5])
print(array_1d[0])
输出:
1
切片
import numpy as np
array_1d = np.array([1, 2, 3, 4, 5])
print(array_1d[1:4])
输出:
[2 3 4]
数组的赋值与修改
NumPy数组支持直接赋值和修改操作。
import numpy as np
array_1d = np.array([1, 2, 3, 4, 5])
array_1d[0] = 10
print(array_1d)
输出:
[10 2 3 4 5]
数组的形状与维度
NumPy数组的形状可以通过shape
属性进行查看和修改。
import numpy as np
array_2d = np.array([[1, 2, 3], [4, 5, 6]])
print(array_2d.shape)
输出:
(2, 3)
可以通过reshape()
函数改变数组的形状。
import numpy as np
array_1d = np.array([1, 2, 3, 4, 5, 6])
array_reshape = array_1d.reshape((2, 3))
print(array_reshape)
输出:
[[1 2 3]
[4 5 6]]
数组的运算
基本算术运算
NumPy数组支持各种算术运算,如加减乘除等。
import numpy as np
array_a = np.array([1, 2, 3])
array_b = np.array([4, 5, 6])
print(array_a + array_b)
print(array_a - array_b)
print(array_a * array_b)
print(array_a / array_b)
输出:
[5 7 9]
[-3 -3 -3]
[ 4 10 18]
[0.25 0.4 0.5 ]
通用函数
NumPy提供了一系列的通用函数,用于进行数组的逐元素操作。
import numpy as np
array_square = np.array([1, 2, 3, 4])
print(np.square(array_square))
print(np.sqrt(array_square))
输出:
[ 1 4 9 16]
[1. 2. 1.73205081 2. ]
数组之间的运算
数组之间可以进行各种数学运算,如矩阵乘法、点积等。
import numpy as np
array_a = np.array([[1, 2], [3, 4]])
array_b = np.array([[5, 6], [7, 8]])
print(np.dot(array_a, array_b))
输出:
[[19 22]
[43 50]]
数组的排序与统计
数组排序
NumPy提供了多种排序函数,如sort()
、argsort()
等。
import numpy as np
array_sort = np.array([3, 1, 2])
print(np.sort(array_sort))
输出:
[1 2 3]
常见统计函数
NumPy提供了丰富的统计函数,如mean()
、sum()
、min()
、max()
等。
import numpy as np
array_stat = np.array([1, 2, 3, 4, 5])
print(np.mean(array_stat))
print(np.sum(array_stat))
print(np.min(array_stat))
print(np.max(array_stat))
输出:
3.0
15
1
5
数组的搜索与计数
NumPy提供了多种搜索和计数函数,如where()
、count_nonzero()
等。
import numpy as np
array_search = np.array([1, 0, 3, 0, 5])
print(np.where(array_search > 2))
print(np.count_nonzero(array_search > 2))
输出:
(array([2, 4], dtype=int64),)
2
数组的高级操作
数组的转置与重塑
NumPy提供了transpose()
和reshape()
函数来进行数组的转置和重塑。
import numpy as np
array_transpose = np.array([[1, 2, 3], [4, 5, 6]])
print(array_transpose.transpose())
输出:
[[1 4]
[2 5]
[3 6]]
import numpy as np
array_reshape = np.array([1, 2, 3, 4, 5, 6])
print(array_reshape.reshape((2, 3)))
输出:
[[1 2 3]
[4 5 6]]
数组的拼接与分割
NumPy提供了concatenate()
和split()
函数来进行数组的拼接和分割。
import numpy as np
array_a = np.array([[1, 2], [3, 4]])
array_b = np.array([[5, 6], [7, 8]])
print(np.concatenate((array_a, array_b), axis=0))
print(np.concatenate((array_a, array_b), axis=1))
输出:
[[1 2]
[3 4]
[5 6]
[7 8]]
[[1 2 5 6]
[3 4 7 8]]
import numpy as np
array_split = np.array([1, 2, 3, 4, 5, 6])
print(np.split(array_split, 2))
输出:
[array([1, 2, 3]), array([4, 5, 6])]
数组的广播机制
NumPy的广播机制使得不同形状的数组可以进行运算。广播的基本规则是:
- 对于两个数组,如果它们的维度不相同,则在前面添加1。
- 比较每一个维度,如果它们相等或者一个为1,则此维度的大小相同。
- 若满足上述条件,不匹配的维度的大小不同的数组会被复制以匹配较大的维度大小。
- 如果不满足上述条件,则数组的形状不兼容,不能进行运算。
import numpy as np
array_a = np.array([1, 2, 3])
array_b = np.array([[4], [5], [6]])
print(array_a + array_b)
输出:
[[5 6 7]
[6 7 8]
[7 8 9]]
以上是NumPy新手入门教程的全部内容,希望你能够通过本教程轻松掌握NumPy数组的操作。如果你需要进一步学习,可以参考官方文档,也可以在慕课网(http://idcbgp.cn/)找相关的课程。
共同學(xué)習(xí),寫下你的評論
評論加載中...
作者其他優(yōu)質(zhì)文章