一、Numpy库是什么?
NumPy是Python中一个重要的数据处理库,它提供了高效的数组操作和数值计算功能。在数据分析中,NumPy库的重要性不言而喻,因为数据分析通常需要处理大量的数据,并进行各种复杂的数学运算。
NumPy库提供了一种称为数组的数据结构,它可以容纳多维数组,并且支持各种数学运算。数组操作是数据分析中的基础,因为它可以快速地对大量数据进行操作,例如筛选、排序、聚合等等。NumPy库还提供了各种数学函数,例如求和、均值、标准差等等,这些函数可以帮助我们更好地理解和分析数据。
二、Numpy库在数据分析中有那些用途?
在数据分析中,NumPy库的应用非常广泛,以下是一些常见的用途:
-
数据预处理
:在进行数据分析之前,通常需要对数据进行预处理,例如去除缺失值、标准化数据等等。NumPy库提供了各种函数,可以帮助我们进行数据预处理。 -
数据分析
:在数据分析过程中,通常需要进行各种数学运算和统计分析,例如求和、均值、标准差、相关系数等等。NumPy库提供了各种数学函数,可以帮助我们进行数据分析。 -
机器学习
:机器学习是数据分析的重要应用之一,它需要大量的数学计算和矩阵运算。NumPy库提供了各种矩阵计算函数,可以帮助我们进行机器学习算法的实现。 -
数据可视化
:数据可视化是数据分析的重要环节之一,它可以帮助我们更好地理解和展示数据。NumPy库可以与Matplotlib库一起使用,帮助我们进行数据可视化。
三、Numpy常用的数据类型有哪些?
数据类型 | 描述 | 用途和范围 |
---|---|---|
bool | 存储True或False的布尔类型 | 常用于逻辑运算和条件判断 |
int8 | 8位整数类型 | 范围为-128到127,可用于节省内存的情况下存储整数 |
int16 | 16位整数类型 | 范围为-32768到32767,可用于存储较小的整数 |
int32 | 32位整数类型 | 范围为-2147483648到2147483647,常用于存储普通整数 |
int64 | 64位整数类型 | 范围为-9223372036854775808到9223372036854775807,可用于存储较大的整数 |
uint8 | 8位无符号整数类型 | 范围为0到255,可用于存储正整数 |
uint16 | 16位无符号整数类型 | 范围为0到65535,可用于存储较小的正整数 |
uint32 | 32位无符号整数类型 | 范围为0到4294967295,常用于存储正整数 |
uint64 | 64位无符号整数类型 | 范围为0到18446744073709551615,可用于存储较大的正整数 |
float16 | 16位浮点类型 | 可用于存储小数,但精度较低,通常用于深度学习中 |
float32 | 32位浮点类型 | 范围为-3.4028235e+38到3.4028235e+38,常用于存储单精度浮点数 |
float64 | 64位浮点类型 | 范围为-1.7976931348623157e+308到1.7976931348623157e+308,常用于存储双精度浮点数 |
complex64 | 64位复数类型 | 可用于存储实部和虚部都是32位浮点数的复数 |
complex128 | 128位复数类型 | 可用于存储实部和虚部都是64位浮点数的复数 |
string_ | 可变长度字符串类型 | 可用于存储字符串 |
datetime64 | 日期和时间类型 | 可用于存储日期和时间 |
timedelta64 | 时间差类型 |
可用于计算时间差 |
除了上述数据类型之外,NumPy还提供了一些其他的数据类型,例如void类型、object类型等等。这些数据类型通常用于特定的场景,例如void类型可用于存储不同类型的数据,object类型可用于存储Python对象。在使用这些数据类型时,需要注意其特殊的用途和范围。
四、Numpy常用的函数及用法有哪些?
1.常用函数
- np.array():创建数组
- np.zeros():创建全0数组
- np.ones():创建全1数组
- np.arange():创建等差数组
- np.linspace():创建等间隔数组
- np.random.rand():创建随机数组
- np.reshape():改变数组形状
- np.transpose():数组转置
- np.dot():矩阵乘法
- np.sum():计算数组元素的和
- np.mean():计算数组元素的平均值
- np.std():计算数组元素的标准差
- np.min():计算数组元素的最小值
- np.max():计算数组元素的最大值
2.函数使用示例
1.np.array()
np.array()函数用于创建数组,可以将列表、元组等序列类型转换为数组类型。代码如下:
import numpy as np
# 将列表转换为数组
list1 = [1, 2, 3, 4, 5]
arr1 = np.array(list1)
print(arr1)
# 输出结果:[1 2 3 4 5]
# 将元组转换为数组
tuple1 = (1, 2, 3, 4, 5)
arr2 = np.array(tuple1)
print(arr2)
# 输出结果:[1 2 3 4 5]
2.np.zeros()
np.zeros()函数用于创建全0数组,可以指定数组的形状和数据类型。代码如下:
import numpy as np
# 创建形状为(3, 3)的全0数组
arr1 = np.zeros((3, 3))
print(arr1)
# 输出结果:
# [[0. 0. 0.]
# [0. 0. 0.]
# [0. 0. 0.]]
# 创建形状为(3, 3)、数据类型为int的全0数组
arr2 = np.zeros((3, 3), dtype=int)
print(arr2)
# 输出结果:
# [[0 0 0]
# [0 0 0]
# [0 0 0]]
3.np.ones()
np.ones()函数用于创建全1数组,可以指定数组的形状和数据类型。代码如下:
import numpy as np
# 创建形状为(3, 3)的全1数组
arr1 = np.ones((3, 3))
print(arr1)
# 输出结果:
# [[1. 1. 1.]
# [1. 1. 1.]
# [1. 1. 1.]]
# 创建形状为(3, 3)、数据类型为int的全1数组
arr2 = np.ones((3, 3), dtype=int)
print(arr2)
# 输出结果:
# [[1 1 1]
# [1 1 1]
# [1 1 1]]
4.np.arange()
np.arange()函数用于创建等差数组,可以指定起始值、终止值和步长。代码如下:
import numpy as np
# 创建起始值为2,终止值为10,步长为2的等差数组
arr1 = np.arange(2, 10, 2)
print(arr1)
# 输出结果:[2 4 6 8]
# 创建起始值为0,终止值为1,步长为0.1的等差数组
arr2 = np.arange(0, 1, 0.1)
print(arr2)
# 输出结果:
# [0. 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9]
5.np.linspace()
np.linspace()函数用于创建等间隔数组,可以指定起始值、终止值和数组长度。代码如下:
import numpy as np
# 创建起始值为0,终止值为1,数组长度为5的等间隔数组
arr1 = np.linspace(0, 1, 5)
print(arr1)
# 输出结果:[0. 0.25 0.5 0.75 1. ]
# 创建起始值为1,终止值为10,数组长度为4的等间隔数组
arr2 = np.linspace(1, 10, 4)
print(arr2)
# 输出结果:[ 1. 4. 7. 10.]
6.np.random.rand()
np.random.rand()函数用于创建随机数组,数组元素为0到1之间的随机数。可以指定数组的形状。代码如下:
import numpy as np
# 创建形状为(3, 3)的随机数组
arr1 = np.random.rand(3, 3)
print(arr1)
# 输出结果:
# [[0.74963322 0.86837363 0.17152166]
# [0.86789836 0.7087327 0.34988989]
# [0.4049485 0.07653613 0.30098195]]
# 创建形状为(2, 4)的随机数组
arr2 = np.random.rand(2, 4)
print(arr2)
# 输出结果:
# [[0.04946719 0.66196339 0.94638457 0.03839422]
# [0.66424495 0.54005153 0.59813005 0.14882098]]
7.np.reshape()
np.reshape()函数用于改变数组形状,可以将一个数组重塑为另一个形状的数组。代码如下:
import numpy as np
# 创建形状为(6,)的数组
arr1 = np.array([1, 2, 3, 4, 5, 6])
print(arr1.shape)
# 输出结果:(6,)
# 将形状为(6,)的数组重塑为形状为(2, 3)的数组
arr2 = np.reshape(arr1, (2, 3))
print(arr2)
# 输出结果:
# [[1 2 3]
# [4 5 6]]
# 将形状为(2, 3)的数组重塑为形状为(6,)的数组
arr3 = np.reshape(arr2, (6,))
print(arr3)
# 输出结果:[1 2 3 4 5 6]
8.np.transpose()
np.transpose()函数用于数组转置,可以将数组的行和列互换。代码如下:
import numpy as np
# 创建形状为(2, 3)的数组
arr1 = np.array([[1, 2, 3], [4, 5, 6]])
print(arr1)
# 输出结果:
# [[1 2 3]
# [4 5 6]]
# 将形状为(2, 3)的数组转置为形状为(3, 2)的数组
arr2 = np.transpose(arr1)
print(arr2)
# 输出结果:
# [[1 4]
# [2 5]
# [3 6]]
9.np.dot()
np.dot()函数用于矩阵乘法,可以计算两个数组的矩阵乘积。代码如下:
import numpy as np
# 创建形状为(2, 3)的数组
arr1 = np.array([[1, 2, 3], [4, 5, 6]])
print(arr1)
# 输出结果:
# [[1 2 3]
# [4 5 6]]
# 创建形状为(3, 2)的数组
arr2 = np.array([[2, 3], [4, 5], [6, 7]])
print(arr2)
# 输出结果:
# [[2 3]
# [4 5]
# [6 7]]
# 计算两个数组的矩阵乘积
arr3 = np.dot(arr1, arr2)
print(arr3)
# 输出结果:
# [[28 34]
# [64 79]]
10.np.sum()
np.sum()函数用于计算数组元素的和,可以指定计算的轴。代码如下:
import numpy as np
# 创建形状为(2, 3)的数组
arr1 = np.array([[1, 2, 3], [4, 5, 6]])
print(arr1)
# 输出结果:
# [[1 2 3]
# [4 5 6]]
# 计算所有元素的和
sum1 = np.sum(arr1)
print(sum1)
# 输出结果:21
# 沿着第0轴计算元素的和
sum2 = np.sum(arr1, axis=0)
print(sum2)
# 输出结果:[5 7 9]
# 沿着第1轴计算元素的和
sum3 = np.sum(arr1, axis=1)
print(sum3)
# 输出结果:[ 6 15]
11.np.mean()
np.mean()函数用于计算数组元素的平均值,可以指定计算的轴。代码如下:
import numpy as np
# 创建形状为(2, 3)的数组
arr1 = np.array([[1, 2, 3], [4, 5, 6]])
print(arr1)
# 输出结果:
# [[1 2 3]
# [4 5 6]]
# 计算所有元素的平均值
mean1 = np.mean(arr1)
print(mean1)
# 输出结果:3.5
# 沿着第0轴计算元素的平均值
mean2 = np.mean(arr1, axis=0)
print(mean2)
# 输出结果:[2.5 3.5 4.5]
# 沿着第1轴计算元素的平均值
mean3 = np.mean(arr1, axis=1)
print(mean3)
# 输出结果:[2. 5.]
12.np.std()
np.std()函数用于计算数组元素的标准差,可以指定计算的轴。代码如下:
import numpy as np
# 创建形状为(2, 3)的数组
arr1 = np.array([[1, 2, 3], [4, 5, 6]])
print(arr1)
# 输出结果:
# [[1 2 3]
# [4 5 6]]
# 计算所有元素的标准差
std1 = np.std(arr1)
print(std1)
# 输出结果:1.707825127659933
# 沿着第0轴计算元素的标准差
std2 = np.std(arr1, axis=0)
print(std2)
# 输出结果:[1.5 1.5 1.5]
# 沿着第1轴计算元素的标准差
std3 = np.std(arr1, axis=1)
print(std3)
# 输出结果:[0.81649658 0.81649658]
13.np.min()
np.min()函数用于计算数组元素的最小值,可以指定计算的轴。代码如下:
import numpy as np
# 创建形状为(2, 3)的数组
arr1 = np.array([[1, 2, 3], [4, 5, 6]])
print(arr1)
# 输出结果:
# [[1 2 3]
# [4 5 6]]
# 计算所有元素的最小值
min1 = np.min(arr1)
print(min1)
# 输出结果:1
# 沿着第0轴计算元素的最小值
min2 = np.min(arr1, axis=0)
print(min2)
# 输出结果:[1 2 3]
# 沿着第1轴计算元素的最小值
min3 = np.min(arr1, axis=1)
print(min3)
# 输出结果:[1 4]
14.np.max()
np.max()函数用于计算数组元素的最大值,可以指定计算的轴。代码如下
import numpy as np
# 创建形状为(2, 3)的数组
arr1 = np.array([[1, 2, 3], [4, 5, 6]])
print(arr1)
# 输出结果:
# [[1 2 3]
# [4 5 6]]
# 计算所有元素的最大值
max1 = np.max(arr1)
print(max1)
# 输出结果:6
# 沿着第0轴计算元素的最大值
max2 = np.max(arr1, axis=0)
print(max2)
# 输出结果:[4 5 6]
# 沿着第1轴计算元素的最大值
max3 = np.max(arr1, axis=1)
print(max3)
# 输出结果:[3 6]
五、常用函数参数详解,及使用示例
1.numpy.array()
创建一个numpy数组。
参数:
-
object:数组对象
-
dtype:数据类型,默认为float
-
copy:复制数组,默认为False
-
order:创建数组时使用的存储顺序,默认为C
示例:
import numpy as np
arr1 = np.array([1, 2, 3])
print(arr1) # [1 2 3]
arr2 = np.array([[1, 2, 3], [4, 5, 6]])
print(arr2)
# [[1 2 3]
# [4 5 6]]
2.numpy.arange()
返回一个等差数列数组。
参数:
-
start:起始值,默认为0
-
stop:结束值(不包含),必须指定
-
step:步长,默认为1
-
dtype:数据类型,默认为float
示例:
import numpy as np
arr = np.arange(0, 10, 2)
print(arr) # [0 2 4 6 8]
3.numpy.linspace()
返回一个等间隔数列数组。
参数:
-
start:起始值
-
stop:结束值
-
num:元素个数
-
endpoint:是否包含结束值,默认为True
-
retstep:是否返回步长,默认为False
-
dtype:数据类型,默认为float
示例:
import numpy as np
arr = np.linspace(0, 1, 5)
print(arr) # [0. 0.25 0.5 0.75 1. ]
4.numpy.zeros()
返回一个全0的数组。
参数:
-
shape:数组形状
-
dtype:数据类型,默认为float
示例:
import numpy as np
arr = np.zeros((2, 3))
print(arr)
# [[0. 0. 0.]
# [0. 0. 0.]]
5.numpy.ones()
返回一个全1的数组。
参数:
-
shape:数组形状
-
dtype:数据类型,默认为float
示例:
import numpy as np
arr = np.ones((2, 3))
print(arr)
# [[1. 1. 1.]
# [1. 1. 1.]]
6.numpy.eye()
返回一个单位矩阵数组。
参数:
-
N:矩阵维度
-
dtype:数据类型,默认为float
示例:
import numpy as np
arr = np.eye(3)
print(arr)
# [[1. 0. 0.]
# [0. 1. 0.]
# [0. 0. 1.]]
7.numpy.random.rand()
返回一个指定形状的随机数数组,数值范围为0~1。
参数:
-
d0, d1, …, dn:数组形状
示例:
import numpy as np
arr = np.random.rand(2, 3)
print(arr)
# [[0.21353148 0.51849556 0.80461099]
# [0.7113511 0.87802903 0.23464142]]
8.numpy.max()
返回数组中的最大值。
参数:
-
axis:计算轴,默认为None
示例:
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
print(np.max(arr)) # 6
print(np.max(arr, axis=0)) # [4 5 6]
9.numpy.min()
返回数组中的最小值。
参数:
-
axis:计算轴,默认为None
示例:
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
print(np.min(arr)) # 1
print(np.min(arr, axis=0)) # [1 2 3]
10.numpy.mean()
返回数组的平均值。
参数:
-
axis:计算轴,默认为None
示例:
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
print(np.mean(arr)) # 3.5
print(np.mean(arr, axis=0)) # [2.5 3.5 4.5]
11.numpy.median()
返回数组的中位数。
参数:
-
axis:计算轴,默认为None
示例:
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
print(np.median(arr)) # 3.5
print(np.median(arr, axis=0)) # [2.5 3.5 4.5]
12.numpy.var()
返回数组的方差。
参数:
-
axis:计算轴,默认为None
示例:
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
print(np.var(arr)) # 2.9166666666666665
print(np.var(arr, axis=0)) # [2.25 2.25 2.25]
13.numpy.std()
返回数组的标准差。
参数:
-
axis:计算轴,默认为None
示例:
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
print(np.std(arr)) # 1.707825127659933
print(np.std(arr, axis=0)) # [1.5 1.5 1.5]
14.numpy.transpose()
返回数组的转置。
参数:
-
axes:轴交换顺序,默认为None
示例:
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
print(np.transpose(arr))
# [[1 4]
# [2 5]
# [3 6]]
15.numpy.reshape()
返回一个新的数组,改变数组形状。
参数:
-
newshape:新的形状
示例:
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6]])
print(np.reshape(arr, (3, 2)))
# [[1 2]
# [3 4]
# [5 6]]
16.numpy.hstack()
返回一个水平方向堆叠的数组。
参数:
-
tup:要堆叠的数组序列
示例:
import numpy as np
arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])
print(np.hstack((arr1, arr2))) # [1 2 3 4 5 6]
17.numpy.vstack()
返回一个垂直方向堆叠的数组。
参数:
-
tup:要堆叠的数组序列
示例:
import numpy as np
arr1 = np.array([[1], [2], [3]])
arr2 = np.array([[4], [5], [6]])
print(np.vstack((arr1, arr2)))
# [[1]
# [2]
# [3]
# [4]
# [5]
# [6]]
18.numpy.dot()
返回两个数组的点积。
参数:
-
a:数组1
-
b:数组2
示例:
import numpy as np
arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])
print(np.dot(arr1, arr2)) # 32
19.numpy.matmul()
返回两个数组的矩阵乘积。
参数:
-
a:数组1
-
b:数组2
示例:
import numpy as np
arr1 = np.array([[1, 2], [3, 4]])
arr2 = np.array([[5, 6], [7, 8]])
print(np.matmul(arr1, arr2))
# [[19 22]
# [43 50]]