Numpy 对象中的数组
Numpy是用Python语言编写的一个科学计算库,它提供了高效的多维数组对象、丰富的数组操作函数以及模块化的工具集,是Python数据分析和科学计算的重要组成部分。在本文中,我们将重点介绍Numpy中的数组对象,并讲解如何创建、操作以及使用Numpy数组。
阅读更多:Numpy 教程
Numpy数组创建
在使用Numpy中的数组之前,首先要创建它。我们可以使用Numpy提供的array()函数来创建一个数组,例如:
import numpy as np
# 创建一个一维数组
arr1 = np.array([1, 2, 3])
print(arr1)
# 创建一个二维数组
arr2 = np.array([[1, 2, 3], [4, 5, 6]])
print(arr2)
输出结果:
[1 2 3]
[[1 2 3]
[4 5 6]]
当我们使用array()函数创建数组时,Numpy会自动根据输入的数据类型来确定数组的数据类型。例如,上面代码中创建的一维数组和二维数组的数据类型都是int64。我们也可以手动指定数组的数据类型,在创建数组时,同时传递dtype参数即可。例如:
# 创建一个浮点型一维数组
arr3 = np.array([1.0, 2.0, 3.0], dtype=np.float32)
print(arr3)
# 创建一个字符串型的一维数组
arr4 = np.array(["hello", "world"])
print(arr4)
输出结果:
[1. 2. 3.]
['hello' 'world']
Numpy数组操作
Numpy提供了丰富的数组操作函数,它们可以让我们方便地对数组进行各种操作,例如:计算统计量,索引和切片,重塑和转换等。下面我们将介绍一些常见的数组操作函数。
计算统计量
在Numpy中,我们可以使用mean()、sum()、min()、max()等函数来计算数组元素的均值、总和、最小值和最大值。例如:
# 计算一维数组的均值、总和、最小值和最大值
arr5 = np.array([1, 2, 3, 4])
print(arr5.mean())
print(arr5.sum())
print(arr5.min())
print(arr5.max())
# 计算二维数组的均值、总和、最小值和最大值
arr6 = np.array([[1, 2], [3, 4]])
print(arr6.mean())
print(arr6.sum())
print(arr6.min())
print(arr6.max())
输出结果:
2.5
10
1
4
2.5
10
1
4
索引和切片
在Numpy中,我们可以使用数组索引和切片来访问数组中的元素或子数组。例如:
# 访问一维数组中的元素
arr7 = np.array([1, 2, 3, 4])
print(arr7[0])
print(arr7[-1])
# 访问二维数组中的元素
arr8 = np.array([[1, 2], [3, 4], [5, 6]])
print(arr8[0, 0])
print(arr8[-1, -1])
# 切片一维数组
print(arr7[1:3])
# 切片二维数组
print(arr8[1:, :])
输出结果:
1
4
1
6
[2 3]
[[3 4]
[5 6]]
重塑和转换
在Numpy中,我们可以使用reshape()函数来重塑数组的形状。例如:
# 一维数组重塑为二维数组
arr9 = np.array([1, 2, 3, 4, 5, 6])
print(arr9.reshape(2, 3))
# 二维数组重塑为一维数组
arr10 = np.array([[1, 2], [3, 4], [5, 6]])
print(arr10.reshape(-1))
# 类型转换
arr11 = np.array([1, 2, 3], dtype=np.float32)
print(arr11.dtype)
arr12 = arr11.astype(np.int32)
print(arr12)
print(arr12.dtype)
输出结果:
[[1 2 3]
[4 5 6]]
[1 2 3 4 5 6]
float32
[1 2 3]
int32
Numpy数组使用
除了以上介绍的数组创建和操作外,Numpy中的数组还有很多其他用法。下面我们将通过一些代码示例来进一步说明。
创建随机数组
我们可以使用Numpy中的random模块来生成随机数组。例如:
# 初始化随机数种子,保证每次生成的随机数相同
np.random.seed(0)
# 创建一个随机一维数组,元素值在[0, 1)之间
arr13 = np.random.rand(5)
print(arr13)
# 创建一个随机二维数组,元素值在[0, 1)之间
arr14 = np.random.rand(3, 2)
print(arr14)
# 创建一个随机一维数组,元素值符合标准正态分布
arr15 = np.random.randn(5)
print(arr15)
# 创建一个随机二维数组,元素值符合标准正态分布
arr16 = np.random.randn(3, 2)
print(arr16)
输出结果:
[0.5488135 0.71518937 0.60276338 0.54488318 0.4236548 ]
[[0.64589411 0.43758721]
[0.891773 0.96366276]
[0.38344152 0.79172504]]
[ 1.76405235 0.40015721 0.97873798 2.2408932 1.86755799]
[[-0.97727788 0.95008842]
[-0.15135721 -0.10321885]
[ 0.4105985 0.14404357]]
批量操作
我们可以使用Numpy中的函数对数组进行批量的运算。例如:
# 计算两个一维数组的和
arr17 = np.array([1, 2, 3])
arr18 = np.array([4, 5, 6])
print(np.add(arr17, arr18))
# 计算二维数组每列的均值
arr19 = np.array([[1, 2], [3, 4], [5, 6]])
print(np.mean(arr19, axis=0))
输出结果:
[5 7 9]
[3. 4.]
数组拼接
Numpy还提供了一些函数,用于将多个数组拼接成一个更大的数组。例如:
# 拼接两个一维数组
arr20 = np.array([1, 2, 3])
arr21 = np.array([4, 5, 6])
print(np.concatenate((arr20, arr21)))
# 拼接两个二维数组
arr22 = np.array([[1, 2], [3, 4]])
arr23 = np.array([[5, 6], [7, 8]])
print(np.concatenate((arr22, arr23), axis=1))
输出结果:
[1 2 3 4 5 6]
[[1 2 5 6]
[3 4 7 8]]
总结
本文对Numpy中的数组进行了介绍,包括创建和操作数组的方法,以及使用数组进行统计计算、索引切片和数组拼接等主要用法。通常情况下,我们可以使用Numpy数组来替代Python自带的列表,获得更高效的计算和更方便的操作。希望通过本文的介绍,您对Numpy数组有更深入的了解和掌握。