4

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

 1 year ago
source link: https://blog.51cto.com/u_15943369/6113404
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

【数据分析:工具篇】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介绍_NumPy

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

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

输出结果为:

[1. 2. 3.]

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

可以使用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介绍_NumPy_03

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介绍_数据分析_04

生成随机数。使用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介绍_NumPy_05

索引和切片

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

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

输出结果为:

1
[2 3]

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

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

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_07

可以使用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介绍_数据科学_08

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

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介绍_NumPy_09

可以使用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_10

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


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK