作为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/查看更多细节。