【数据分析:工具篇】NumPy(1)NumPy介绍

时间:2020-12-06 00:51:47

(【数据分析:工具篇】NumPy(1)NumPy介绍)

NumPy介绍

NumPy(Numerical Python)是Python的一个开源的科学计算库,它主要用于处理大规模的多维数组以及矩阵操作。NumPy是在Python中进行科学计算的基础库,许多其他的科学计算库都是基于NumPy进行开发的,包括Scipy、Pandas等。

NumPy是Python中非常重要的科学计算库之一,它提供了丰富的多维数组对象、高效的向量化计算、数组操作、数组切片和索引、广播机制、矩阵计算、随机数生成、通用函数、数学函数和统计函数、数据类型转换等各种强大的功能,可以方便地进行数据处理、科学计算、统计分析和机器学习等任务。如果你想要在Python中进行数据科学或机器学习的任务,那么学习和掌握NumPy是非常有必要的。

NumPy的核心是多维数组(ndarray),它可以用来表示向量、矩阵以及更高维的数组。NumPy中的数组操作都是在底层以C语言的形式实现的,因此它非常高效。

NumPy的安装非常简单,可以通过pip命令来安装,例如:

pip install numpy

安装完成之后,就可以在Python中导入NumPy:

import numpy as np

NumPy的特点

NumPy具有以下特点一些:

  • 多维数组对象:NumPy最主要的特点是其多维数组对象ndarray,这种数组可以存储任意类型的数据,并且可以进行高效的数组计算。这种数组可以在一些数据分析和科学计算任务中替代传统的Python列表,因为它的存储和计算效率更高。
  • 内置的数据类型:NumPy支持多种数据类型,包括整型、浮点型、复数、布尔型等,可以根据不同的需求进行选择。
  • 随机数生成:NumPy中的random模块提供了各种随机数生成函数,例如rand()、randn()、randint()等,可以生成各种不同类型的随机数,这些随机数在模拟、实验和数据分析等任务中都非常有用。
  • 数据类型转换:NumPy提供了各种数据类型转换函数,可以将数组从一种数据类型转换成另一种数据类型,例如astype()函数可以将数组的数据类型转换成指定的数据类型,这些函数在数据预处理和清洗中经常使用。
  • 方便的数组索引和切片:NumPy支持各种不同的数组切片和索引方式,包括基于整数和布尔值的索引方式,以及基于轴向的索引方式,这使得数据的选择和处理变得更加方便和高效。
  • 数组操作:NumPy提供了许多用于操作数组的函数,例如:reshape、concatenate、split、flatten等等。这些函数使得数组的操作变得更加容易和灵活。
  • 通用函数:NumPy中的ufunc(通用函数)可以对数组进行逐元素操作,例如exp()、log()、sin()、cos()等等,这些函数在数学计算和科学计算中都经常使用。
  • 数学函数和统计函数:NumPy提供了各种数学函数和统计函数,例如sum()、mean()、median()、std()、var()等等,可以方便地计算数组的各种统计量和数学函数值。
  • 广播机制:广播机制是NumPy中一种非常重要的特点,它可以使得不同形状的数组进行计算时,它会自动将较小的数组进行复制和扩展,以适应较大的数组形状,避免了显式地进行循环操作,从而使得数组之间的计算变得更加方便和高效。
  • 文件输入输出:NumPy提供了各种文件输入输出函数,例如load()、save()、savetxt()等,可以方便地读取和保存多维数组数据,这些函数对于数据分析和机器学习等领域非常有用。
  • 快速、高效:NumPy是用C语言编写的,因此可以快速地执行计算,而且在内存使用方面也做了优化,所以处理大型数据集时非常高效。
  • 内存管理:NumPy提供了各种内存管理函数和方法,例如reshape()、resize()、flatten()、ravel()等,可以方便地操作数组的形状和大小,避免了不必要的内存分配和拷贝。
  • 大数据处理:NumPy中的数组可以处理大量的数据,因为它使用了连续的内存块,所以可以高效地处理大型数据集。
  • 高效的向量化计算:NumPy支持向量化计算,即在数组上进行运算,而不是在单个元素上进行计算,这种运算方式非常高效,并且可以利用现代CPU的并行计算能力。因此,如果你需要进行数组计算或矩阵计算,那么NumPy是一个非常好的选择。
  • 矩阵计算:除了多维数组的支持之外,NumPy还提供了矩阵计算相关的函数和方法,例如dot()函数可以实现矩阵乘法运算。这些函数和方法在科学计算和机器学习等领域中经常被使用。
  • 可以与其他科学计算库配合使用:NumPy与其他许多Python科学计算库(如SciPy、Pandas、Matplotlib等)兼容性良好,可以方便地与它们进行集成,实现更加复杂的科学计算任务。
  • 可视化:NumPy可以通过与Matplotlib等可视化库的集成,实现数据可视化。
  • 可扩展性:NumPy的底层代码是用C和Fortran编写的,可以通过Cython等工具将Python代码转换为C代码,从而提高代码的性能。
  • 开源和免费:NumPy是开源和免费的软件,可以在任何操作系统上使用,并且可以*地修改和分发。

数组的基本操作

创建数组

可以使用NumPy中的array函数来创建数组,例如:

a = np.array([1, 2, 3])
print(a)

输出结果为:

[1 2 3]

【数据分析:工具篇】NumPy(1)NumPy介绍

可以使用dtype参数来指定数组的数据类型:

b = np.array([1, 2, 3], dtype=float)
print(b)

输出结果为:

[1. 2. 3.]

【数据分析:工具篇】NumPy(1)NumPy介绍

可以使用zerosonesempty等函数来创建特定形状的数组。

np.zeros是NumPy中用于创建指定形状的全0数组的函数。 np.zeros 的基本语法如下:

np.zeros(shape, dtype=float, order='C')

其中,参数解释如下:

  • shape:数组的形状,可以是一个整数表示一维数组,或者一个元组表示多维数组。
  • dtype:可选参数,指定数组的数据类型,默认为 float
  • order:可选参数,指定数组在内存中的存储顺序,可以是 'C'(按行存储)或者 'F'(按列存储),默认为 'C'
c = np.zeros((2, 3))
print(c)

输出结果为:

[[0. 0. 0.]
 [0. 0. 0.]]

【数据分析:工具篇】NumPy(1)NumPy介绍

np.ones 是NumPy中用于创建指定形状的全1数组的函数。

np.ones 的基本语法如下:

np.ones(shape, dtype=float, order='C')

其中,参数解释如下:

  • shape:数组的形状,可以是一个整数表示一维数组,或者一个元组表示多维数组。
  • dtype:可选参数,指定数组的数据类型,默认为 float
  • order:可选参数,指定数组在内存中的存储顺序,可以是 'C'(按行存储)或者 'F'(按列存储),默认为 'C'
d = np.ones((2, 3))
print(d)

输出结果为:

[[1. 1. 1.]
 [1. 1. 1.]]

【数据分析:工具篇】NumPy(1)NumPy介绍

生成随机数。使用np.empty()生成的数组并不会被初始化为任何特定的值,因此数组的内容是未知的,可能包含任何值。

e = np.empty((2, 3), dtype=np.float64)
print(e)

输出结果为:

[[6.23042070e-307 3.56043053e-307 1.37961641e-306]
 [2.22518251e-306 1.33511969e-306 1.24610383e-306]]

【数据分析:工具篇】NumPy(1)NumPy介绍

索引和切片

可以使用整数索引和切片来访问数组中的元素,例如:

a = np.array([1, 2, 3, 4, 5])
print(a[0])
print(a[1:3])

输出结果为:

1
[2 3]

【数据分析:工具篇】NumPy(1)NumPy介绍

可以使用多维索引和切片来访问多维数组中的元素,例如:

b = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(b[0, 0])
print(b[1:3, 1:3])

输出结果为:

1
[[5 6]
 [8 9]]

【数据分析:工具篇】NumPy(1)NumPy介绍

数组运算

可以使用NumPy中的各种函数来对数组进行运算,例如:

a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
print(a + b)
print(a - b)
print(a * b)
print(a / b)

输出结果为:

[5 7 9]
[-3 -3 -3]
[ 4 10 18]
[0.25 0.4  0.5 ]

【数据分析:工具篇】NumPy(1)NumPy介绍

可以使用各种函数来对数组进行操作,例如:

a = np.array([1, 2, 3])
print(np.sqrt(a))
print(np.exp(a))
print(np.sin(a))

输出结果为:

[1.         1.41421356 1.73205081]
[ 2.71828183  7.3890561  20.08553692]
[0.84147098 0.90929743 0.14112001]

【数据分析:工具篇】NumPy(1)NumPy介绍

可以使用dot函数来进行矩阵乘法运算,例如:

a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6], [7, 8]])
print(np.dot(a, b))

输出结果为:

[[19 22]
 [43 50]]

【数据分析:工具篇】NumPy(1)NumPy介绍

总结

NumPy是Python中非常重要的科学计算库之一,它提供了丰富的多维数组对象、高效的向量化计算、数组操作、数组切片和索引、广播机制、矩阵计算、随机数生成、通用函数、数学函数和统计函数、数据类型转换等各种强大的功能,可以方便地进行数据处理、科学计算、统计分析和机器学习等任务。如果你想要在Python中进行数据科学或机器学习的任务,那么学习和掌握NumPy是非常有必要的。