您的位置:

Python中的神器——Numpy

作为Python开发者,你一定知道Numpy,这是Python中数据科学领域使用最广泛的库之一。Numpy在科学计算和数据分析方面有着非常多的应用,尤其是在数组操作和线性代数方面表现优异。在本文中,我们将从多个方面来介绍Numpy库,让你更加深入地了解这个神器。

一、Numpy的基本介绍

1、Numpy的安装使用

pip install numpy

使用import语句来载入numpy库:

import numpy as np

2、Numpy的核心数据结构——ndarray

ndarray是Numpy中最重要的对象之一,它是一个具有相同类型和大小的元素的多维数组。ndarray在内存中的存储方式和C语言的数组相同,因此可以在Numpy中高效地进行数组运算。下面是一个示例:

a = np.array([1, 2, 3]) # 一维数组
b = np.array([[1, 2, 3], [4, 5, 6]]) # 二维数组
c = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]]) # 三维数组

二、Numpy中的数组运算

1、Numpy中的算数运算

Numpy中的数组运算与Python中的列表运算非常类似,其间有些微的差异,下面是主要的算数运算:

import numpy as np

# 新建两个数组
a = np.array([1, 2, 3, 4])
b = np.array([4, 3, 2, 1])

# 数组加法
c1 = a + b
c2 = np.add(a, b)

# 数组减法
d1 = a - b
d2 = np.subtract(a, b)

# 数组乘法
e1 = a * b
e2 = np.multiply(a, b)

# 数组除法
f1 = a / b # 分母中不能为0
f2 = np.divide(a, b)

# 矩阵乘法
g1 = np.dot(a, b)
g2 = a.dot(b)

# 数组取整
h = np.floor([2.1, 3.2, 5.3]) # 向下取整

三、Numpy中的数组索引和切片

1、数组索引

可以通过下标获取数组的元素,也可以通过整数或者布尔类型的序列来获取数组中需要的元素:

import numpy as np

# 数组索引
a = np.array([1, 2, 3, 4, 5])
print(a[0]) # 输出1
print(a[-1]) # 输出5

# 通过序列获取元素
b = np.array([1, 2, 3, 4, 5])
c = b[[0, 2, 4]]
print(c) # 输出[1 3 5]

# 布尔索引
d = np.array([1, 2, 3, 4, 5])
bool_index = d > 2
e = d[bool_index]
print(e) # 输出[3 4 5]

2、数组切片

可以使用切片来获取数组中的一部分,与Python中列表类似:

import numpy as np

# 数组切片
f = np.array([1, 2, 3, 4, 5])
print(f[1:3]) # 输出[2 3]

# 二维数组切片
g = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(g[:2, 1:]) # 输出[[2 3] [5 6]]

四、Numpy中的数组形状操作和转换

1、数组形状操作

使用shape属性来获取数组的形状,可以使用reshape方法改变数组的形状。注意,在使用reshape方法改变数组形状时,原数组的元素个数必须与新形状中的元素个数相等。

import numpy as np

# 获取数组形状
a = np.array([[1, 2], [3, 4], [5, 6]])
print(a.shape) # 输出(3, 2)

# 改变数组形状
b = np.array([[1, 2], [3, 4], [5, 6]])
c = b.reshape(2, 3)
print(c) # 输出[[1 2 3] [4 5 6]]

2、数组转换

Numpy中的数组可以转换成Python中的列表,也可以转换成Pandas中的DataFrame。

import numpy as np
import pandas as pd

# 数组转换成列表
a = np.array([1, 2, 3])
b = a.tolist()
print(b) # 输出[1, 2, 3]

# 数组转换成DataFrame
c = {'a': [1, 2, 3], 'b': [4, 5, 6]}
d = pd.DataFrame(c)
print(d)

五、Numpy中的数组操作

1、数组的合并和拆分

Numpy中可以通过hstack和vstack对多个数组进行合并,也可以通过split和hsplit方法对数组进行拆分。

import numpy as np

# 数组的合并
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
c = np.hstack((a, b))
d = np.vstack((a, b))

# 数组的拆分
e = np.array([[1, 2, 3], [4, 5, 6]])
f, g, h = np.split(e, 3, axis=1)

六、Numpy中的随机数生成

Numpy中内置了一个随机数生成器,可以通过它来生成符合特定分布的随机数。

import numpy as np

# 生成均匀分布的随机数
a = np.random.rand(2, 3)

# 生成正态分布的随机数
b = np.random.randn(2, 3)

到这里,我们对Numpy进行了全方面的介绍,如果您对Numpy有更深入的了解,可以去官方文档https://numpy.org/查看更多细节。