NumPy是Python编程语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。NumPy的名称源自数值包装(Numerical Package),其包含许多针对数值运算的函数,包含数学、逻辑、数组形状变换等。
主要特性如下:
多维数组对象(ndarray)
:这是NumPy的核心内容,提供了强大的多维数组对象。这个对象能够存储不同类型的数据(整数、浮点数、字符串等),并且可以灵活地调整大小。
数学函数库
:NumPy提供了大量的数学函数,可以对数组进行各种计算。这些函数包括线性代数、傅里叶变换、排序等。
广播机制
:广播机制允许在维度数不同的数组之间进行数学运算,使得操作更加简单和直观。
高效的内存管理
:NumPy使用一种称为缓冲区(buffer)的机制来管理内存,使得数据的存储和访问更加高效。
集成C/C++和Fortran代码
:NumPy的另一个强大之处是它可以轻松地调用C、C++和Fortran的代码,这使得NumPy可以与许多高性能的数值库进行无缝集成。
高效的I/O操作
:NumPy的数据可以直接存储在二进制文件中,这使得数据的读取和写入更加高效。
跨平台兼容性
:NumPy在各种操作系统上都可以使用,包括Windows、Linux和Mac OS X。
总的来说,NumPy为Python提供了一个强大的数值计算平台,使得Python成为一种流行的科学计算语言。
Numpy的安装:
pip install numpy
验证:
from numpy import eye
print(eye(3))
[[1. 0. 0.]
[0. 1. 0.]
[0. 0. 1.]]
NumPy中的数据类型主要包括整数、浮点数、复数、布尔值、字符串、Python对象类型等。
具体来说,NumPy定义了一些特定的数据类型,包括布尔类型(bool/bool_)、整型(int8/int16/int32/int64)、无符号整型(uint8/uint16/uint32/uint64)、浮点数类型(float16/float32/float64)以及复数类型(complex64/complex128)。
使用dtype可以指定创建数组的数据类型,默认的浮点数是float64。也可以通过类型代码指定数据类型。如果想要改变数组的数据类型,可以使用astype函数。
import numpy as np
# 创建一个包含不同整数类型的数组
a = np.array([1, 2, 3, 4, 5], dtype=np.int32)
print(a)
# 创建一个包含不同浮点数的数组
b = np.array([1.1, 2.2, 3.3, 4.4, 5.5], dtype=np.float32)
print(b)
# 创建一个包含复数的数组
c = np.array([1+2j, 2+3j, 3+4j], dtype=np.complex128)
print(c)
# 创建一个包含字符串的数组
d = np.array(['hello', 'world', 'numpy'], dtype=np.unicode_)
print(d)
ndarray是NumPy中的核心数据结构,它是一个多维数组,可以存储不同类型的数据。它具有许多有用的属性和方法,可以用于进行各种数组操作和数学计算。
ndarray是一系列同类型数据的集合,以 0 下标为开始进行集合中元素的索引。ndarray 对象是用于存放同类型元素的多维数组。ndarray 中的每个元素在内存中都有相同存储大小的区域。
下面是一些关于Ndarray对象的例子:
import numpy as np
a = np.array([1, 2, 3, 4, 5])
print(a)
[1 2 3 4 5]
import numpy as np
a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(a)
[[1 2 3]
[4 5 6]
[7 8 9]]
Ndarray对象和List对象比较
相似之处:
不同之处:
创建数组
import numpy as np
# 创建一个包含整数的数组
a = np.array([1, 2, 3, 4, 5])
print(a)
# 创建一个包含浮点数的数组
b = np.array([1.1, 2.2, 3.3, 4.4, 5.5])
print(b)
# 创建一个包含字符串的数组
c = np.array(['hello', 'world', 'numpy'])
print(c)
数组切片和索引
import numpy as np
# 通过切片获取数组的一部分元素
sliced_array = a[1:4] # 获取索引1到3的元素,不包括0索引
print(sliced_array)
# 通过索引获取单个元素
element = a[2] # 获取第三个元素
print(element)
数组重塑和重塑形状
import numpy as np
# 创建一个二维数组
array_2d = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(array_2d)
# 将二维数组重塑为一维数组
reshaped_array = array_2d.reshape(-1) # -1表示自动计算该轴的大小
print(reshaped_array)
数组数学运算
import numpy as np
# 对数组执行加法运算
added_array = a + b
print(added_array)
# 对数组执行减法运算
subtracted_array = a - b
print(subtracted_array)