Python numpy教程

Python numpy教程

Python numpy教程

1. 简介

NumPy是Python中最重要的科学计算库之一。它提供了高性能的多维数组对象和一组处理这些数组的工具。通过使用Numpy,我们可以简化数组操作和数学计算,并且可以高效地处理大量的数据。

本文将对NumPy的基本操作进行详解,包括数组的创建、索引和切片、数学运算、数组操作等。

在开始之前,请确保你已经安装了NumPy库,你可以通过下面的命令安装:

pip install numpy

同时,我们也将使用Jupyter Notebook来展示示例代码,如果你还没有安装Jupyter Notebook,可以通过下面的命令进行安装:

pip install jupyter

2. 数组的创建

NumPy的核心对象是ndarray,即多维数组。我们可以通过多种方式来创建NumPy数组。

2.1. 从列表创建数组

我们可以使用numpy.array()函数来从列表创建NumPy数组,示例如下:

import numpy as np

# 创建一个一维数组
arr1 = np.array([1, 2, 3, 4, 5])
print(arr1)  # 输出: [1 2 3 4 5]

# 创建一个二维数组
arr2 = np.array([[1, 2, 3], [4, 5, 6]])
print(arr2)
# 输出:
# [[1 2 3]
#  [4 5 6]]
Python

2.2. 使用内置函数创建数组

NumPy还提供了一些内置函数来创建特定的数组。常用的函数包括:

  • numpy.zeros(shape):创建一个全是0的数组。
  • numpy.ones(shape):创建一个全是1的数组。
  • numpy.full(shape, value):创建一个指定值的数组。

示例如下:

import numpy as np

# 创建一个全是0的数组
arr1 = np.zeros((3, 3))
print(arr1)
# 输出:
# [[0. 0. 0.]
#  [0. 0. 0.]
#  [0. 0. 0.]]

# 创建一个全是1的数组
arr2 = np.ones((2, 2))
print(arr2)
# 输出:
# [[1. 1.]
#  [1. 1.]]

# 创建一个指定值的数组
arr3 = np.full((2, 2), 5)
print(arr3)
# 输出:
# [[5 5]
#  [5 5]]
Python

2.3. 从现有的数组创建

我们还可以从现有的数组创建新的数组,可以使用numpy.copy()函数或者ndarray.copy()方法来实现。示例如下:

import numpy as np

# 创建一个现有的数组
arr1 = np.array([[1, 2, 3], [4, 5, 6]])
print(arr1)
# 输出:
# [[1 2 3]
#  [4 5 6]]

# 使用numpy.copy()函数创建一个新的数组
arr2 = np.copy(arr1)
print(arr2)
# 输出:
# [[1 2 3]
#  [4 5 6]]

# 使用ndarray.copy()方法创建一个新的数组
arr3 = arr1.copy()
print(arr3)
# 输出:
# [[1 2 3]
#  [4 5 6]]
Python

2.4. 使用内置函数创建特定格式的数组

在科学计算中,常常会使用到一些特定格式的数组,例如等差数列和等差矩阵。NumPy提供了一些内置函数来创建这些特定格式的数组。

2.4.1. 创建等差数列

我们可以使用numpy.arange(start, stop, step, dtype)函数创建一个等差数列。该函数的参数含义如下:

  • start:数列的起始值。
  • stop:数列的结束值(不包含)。
  • step:数列的步长。
  • dtype:数列的数据类型。

示例如下:

import numpy as np

# 创建一个等差数列
arr = np.arange(0, 10, 2)
print(arr)  # 输出: [0 2 4 6 8]
Python

2.4.2. 创建等差矩阵

我们可以使用numpy.linspace(start, stop, num, endpoint, retstep, dtype)函数创建一个等差矩阵。该函数的参数含义如下:

  • start:数列的起始值。
  • stop:数列的结束值。
  • num:数列的个数。
  • endpoint:数列是否包含结束值。
  • retstep:数列是否返回步长。
  • dtype:数列的数据类型。

示例如下:

import numpy as np

# 创建一个等差矩阵
arr = np.linspace(0, 1, 5)
print(arr)  # 输出: [0.   0.25 0.5  0.75 1. ]
Python

3. 数组的索引和切片

NumPy数组与Python中的列表类似,可以通过索引和切片来访问数组中的元素。

3.1. 一维数组的索引和切片

对于一维数组,可以使用索引和切片来获取数组中的元素。示例如下:

import numpy as np

# 创建一个一维数组
arr = np.array([1, 2, 3, 4, 5])

# 使用索引获取数组中的元素
print(arr[0])  # 输出: 1

# 使用切片获取数组中的元素
print(arr[1:4])  # 输出: [2 3 4]
Python

3.2. 多维数组的索引和切片

对于多维数组,可以使用多个索引或切片来获取数组中的元素。示例如下:

import numpy as np

# 创建一个二维数组
arr = np.array([[1, 2, 3], [4, 5, 6]])

# 使用索引获取数组中的元素
print(arr[0, 1])  # 输出: 2

# 使用切片获取数组中的元素
print(arr[:, 1:])  # 输出:
# [[2 3]
#  [5 6]]
Python

4. 数组的数学运算

NumPy提供了丰富的数学运算函数,可以对数组进行各种数学运算。

4.1. 数组的加法和减法

我们可以使用+-运算符对数组进行加法和减法运算,该运算符会逐元素进行运算。示例如下:

import numpy as np

# 创建两个数组
arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])

# 数组的加法运算
print(arr1 + arr2)  # 输出: [5 7 9]

# 数组的减法运算
print(arr1 - arr2)  # 输出: [-3 -3 -3]
Python

4.2. 数组的乘

import numpy as np

# 创建两个数组
arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])

# 数组的乘法运算
print(arr1 * arr2)  # 输出: [4 10 18]

# 数组的除法运算
print(arr1 / arr2)  # 输出: [0.25 0.4  0.5 ]
Pytthon

4.3. 数组的矩阵运算

如果需要进行矩阵运算,可以使用numpy.dot()函数或者ndarray.dot()方法。示例如下:

import numpy as np

# 创建两个矩阵
arr1 = np.array([[1, 2], [3, 4]])
arr2 = np.array([[5, 6], [7, 8]])

# 矩阵的乘法运算
print(np.dot(arr1, arr2))
# 输出:
# [[19 22]
#  [43 50]]
Python

5. 数组的操作

NumPy提供了丰富的数组操作函数,可以对数组进行各种操作。

5.1. 数组的形状操作

我们可以使用ndarray.shape属性获取数组的形状信息,使用ndarray.reshape(shape)方法改变数组的形状。示例如下:

import numpy as np

# 创建一个三维数组
arr = np.arange(0, 24).reshape((2, 3, 4))

# 获取数组的形状
print(arr.shape)  # 输出: (2, 3, 4)

# 改变数组的形状
arr = arr.reshape((4, 6))
print(arr)
# 输出:
# [[ 0  1  2  3  4  5]
#  [ 6  7  8  9 10 11]
#  [12 13 14 15 16 17]
#  [18 19 20 21 22 23]]
Python

5.2. 数组的转置操作

我们可以使用ndarray.T属性获得数组的转置矩阵。示例如下:

import numpy as np

# 创建一个二维数组
arr = np.array([[1, 2, 3], [4, 5, 6]])

# 获取数组的转置矩阵
print(arr.T)
# 输出:
# [[1 4]
#  [2 5]
#  [3 6]]
Python

5.3. 数组的拼接操作

我们可以使用numpy.concatenate((a1, a2, ...), axis=0)函数将多个数组沿着指定轴进行拼接。示例如下:

import numpy as np

# 创建两个一维数组
arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])

# 拼接两个一维数组
arr = np.concatenate((arr1, arr2))
print(arr)  # 输出: [1 2 3 4 5 6]
Python

5.4. 数组的排序操作

我们可以使用ndarray.sort(axis=-1, kind='quicksort', order=None)方法来对数组进行排序。示例如下:

import numpy as np

# 创建一个一维数组
arr = np.array([3, 2, 1])

# 对数组进行排序
arr.sort()
print(arr)  # 输出: [1 2 3]
Python

总结

本文介绍了NumPy的基本操作,包括数组的创建、索引和切片、数学运算、数组操作等。通过学习这些基本操作,我们可以更好地使用NumPy进行科学计算和数据分析。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册