Python NumPy教程之数组的基本操作详解

yizhihongxing

Python NumPy教程之数组的基本操作详解

NumPy是Python中用于科学计算的一个重要库,它提供了高效的多维数组对象和各种派生,以及用于数组的函数。本文将详细讲解NumPy中数组的基本操作,包括数组的创建、索引和切片、的运算、数组的拼接和重塑、数组的转置等。

数组的创建

在NumPy中,可以使用np.array()函数创建。下面是一个示例:

import numpy as np

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

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

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

# 打印结果
print(a)
print(b)
print(c)

在上面的示例中,我们分别使用np.array()函数创建了一个一维数组a、一个二维数组b和一个三维数组c。最后,使用print()函数打印出了结果。

需要注意的是,使用np.array()函数创建数组时,可以传入一个列表、元组或其他序列类型的对象作为参数。

数组的索引和切片

在NumPy中,可以使用索引和切片来访问数组中的元素。下面是一个示例:

import numpy as np

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

# 访问数组中的元素
print(a[0, 0])  # 输出1
print(a[1, 1])  # 输出5
print(a[2, 0])  # 输出7

# 对数组进行切片
print(a[0:2, 0:2])  # 输出[[1, 2], [4, 5]]
print(a[1:, :2])    # 输出[[4, 5], [7, 8]]

在上面的示例中,我们首先使用np.array()创建了一个二维数组a,然后使用索引和切片访问了数组中的元素。最后,使用print()函数打印出了结果。

需要注意的是NumPy中的数组索引和切片与Python中的列表索引和切片类似,但有一些不同之处。例如,NumPy中的切片是原数组的一个视图,而不是副本,因此修改切片中的元素会影响原数组中的元素。

数组的运算

在NumPy中,可以对数组进行各种运算,包括加、减、乘、除、求幂等。下面是一个示例:

import numpy as np

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

# 对数组进行运算
c = a + b
d = a - b
e = a * b
f = a / b
g = a ** 2

# 打印结果
print(c)
print(d)
print(e)
print(f)
print(g)

在上面的示例中,我们首先使用np.array()函数创建了两个一维数组ab,然后对它们进行了加、减、乘、除、求幂等运算,并将结果分别保存在变量cdefg中。最后,使用print()函数打印出了结果。

需要注意的是,NumPy中的数组运算是按元素进行的,即对应位置的元素进行相应的运算。

数组的拼接和重塑

在NumPy中,可以使用堆叠方法将多个数组沿着不同的轴进行组合。本文将详细讲解NumPy中数组的堆叠方法,包括np.concatenate()函数、np.vstack()函数、np.hstack()函数、np.dstack()函数和np.stack()函数。

np.concatenate()函数

np.concatenate()函数将多个数组沿着指定的轴进行拼接。下面是一个示例:

import numpy as np

# 创建两个数组
a = np.array([[1, 2, 3], [4, 5, 6]])
b = np.array([[7, 8, 9], [10, 11, 12]])

# 沿着行拼接数组
c = np.concatenate((a, b), axis=0)

# 打印结果
print(c)

在上面的示例中,我们首先使用np.array()函数创建了两个二维数组ab,然后使用np.concatenate()将它们沿着行轴拼接成一个新的数组c。最后,使用print()函数打印出了结果。

np.vstack()函数和np.hstack()函数

np.vstack()函数可以将多个数组沿着垂直方向(行方向)堆叠起来,np.hstack()函数可以将多个数组沿着水平方向(列方向)堆叠起来。下面是两个示例:

示例一:使用np.vstack()函数堆叠数组

import numpy as np

# 创建两个数组
a = np.array([[1, 2, 3], [4, 5, 6]])
b = np.array([[7, 8, 9], [10, 11, 12]])

# 沿着垂直方向堆叠数组
c = np.vstack((a, b))

# 打印结果
print(c)

在上面的示例中,我们首先使用np.array()函数创建了两个二维数组ab,然后使用np.vstack()函数将它们沿着垂直方向堆叠成一个新数组c。最后,使用print()函数打印出了结果。

示例二:使用np.hstack()函数堆叠数组

import numpy as np

# 创建两个数组
a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6], [7, 8]])

# 沿着水平方向堆叠数组
c = np.hstack((a, b))

# 打印结果
print(c)

在上面的示例中,我们首先使用np.array()函数创建了两个二维数组ab,然后使用np.hstack()函数将它们沿着水平方向堆叠成一个新的数组c。最后,使用print()函数打印出了结果。

np.dstack()函数

np.dstack()函数可以将多个数组沿着深度方向(第三个维度)堆叠起来。下面是一个示例:

import numpy as np

# 创建两个数组
a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6], [7, 8]])

# 沿着深度方向堆叠数组
c = np.dstack((a, b))

# 打印结果
print(c)

在上面的示例中,我们首先使用np.array()函数创建了两个二维数组ab,然后使用np.dstack()函数将它们沿着深度方向堆叠成一个新数组c。最后,使用print()函数打印出了结果。

np.stack()函数

np.stack()函数可以将多个数组沿着新的轴进行堆叠。下面是一个示例:

import numpy as np

# 创建两个数组
a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6], [7, 8]])

# 沿着新的轴堆叠数组
c = np.stack((a, b), axis=2)

# 打印结果
print(c)

在上面的示例中,我们首先使用np.array()函数创建了两个二维数组ab,然后使用np.stack()函数将它们沿着新的轴(第三个轴)堆叠成一个新数组c。最后,使用print()函数打印出了结果。

需要注意的是,使用np.stack()函数堆叠数组时,需要指定堆叠的轴。

数组的重塑

在NumPy中,可以使用reshape()对数组进行重塑,即改变数组的形状。reshape()的用法如下:

import numpy as np

# 创建一个形状为(2, 3, 4)的三维数组
a = np.arange(24).reshape(2, 3, 4)

# 打印结果
print(a)

在上面的例子中,我们首先使用np.arange()函数创建了一个长度为24的一维数组,然后使用reshape()函数将其重塑为形状为(2, 3, 4)的三维数组,并将结果保存在变量a中。最后,使用print()函数打印出结果。

需要注意的是,重塑后的数组元素个数必须与原数组元素个数相同,否则会报错。

数组的转置

在NumPy中,可以使用transpose()函数对数组进行转置,即数组行和列互换。transpose()函数的用法如下:

import numpy as np

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

# 对数组进行转置
b = a.transpose()

# 打印结果
print(a)
print(b)

在上面的例子中,我们先使用np.array()函数创建了一个二维数组a,然后使用transpose()函数对其进行转置,并将结果保存在变量b中。最后,使用print()函数打印出了原数组a和转置后的b

需要注意的是,转置后的数组与原数组共享数据存储空间,因此修改其中一个数组的元素会影响另一个数组的元素。

示例:三维数组进行转置

import numpy as np

# 创建一个形状为(2, 3, 4)的三维数组
a = np.arange(24).reshape(2, 3, 4)

# 对数组进行转置
b = a.transpose((1, 0, 2))

# 打印结果
print(a)
print(b)

在上面的例子中,我们首先使用np.arange()函数创建了一个长度为24的一维数组,然后使用reshape()函数将其重塑为形状为(2, 3, 4)的三维数组,并将结果保存在变量a中。然后,使用transpose()函数对其进行转置,并将结果保存在变量b中。最后,使用print()函数打印出了原数组a和转置后的b

需要注意的是,使用transpose()函数转置数组时需要指定转置后的轴顺序。在上面的例子中,我们指定转置后的轴顺序为(1, 0, 2),即将原数组的第0个轴和1个轴互换。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python NumPy教程之数组的基本操作详解 - Python技术站

(0)
上一篇 2023年5月13日
下一篇 2023年5月13日

相关文章

  • 详解Tensorflow数据读取有三种方式(next_batch)

    在TensorFlow中,有三种方式可以读取数据,分别是使用next_batch()函数、使用tf.data.Dataset API和使用tf.keras.utils.Sequence类。以下是详解TensorFlow数据读取有三种方式(next_batch)的完整攻略,重点介绍next_batch()函数的使用方法和两个示例说明: next_batch()…

    python 2023年5月14日
    00
  • Numpy广播域的理解

    NumPy是一个Python科学计算库,其中包含了许多用于数组操作的函数。其中,广播是一种非常重要的机制,它允许NumPy在不同形状的数组之间执行算术运算。下面是Numpy广播域的理解的完整攻略: 广播的概念 广播是一种NumPy机制,它允许NumPy在不同形状的数组之间执行算术运算。在广播中,NumPy会自动将较小的数组广播到较大的数组的形状,以便它们具有…

    python 2023年5月14日
    00
  • numpy 返回函数的上三角矩阵实例

    在Numpy中,可以使用triu函数来返回一个矩阵的上三角矩阵。本文将详细介绍如何使用triu函数,并提供两个示例来说明它的用法。 triu函数语法 triu函数的语法如下: numpy.triu(m, k=0) 其中,参数m是要进行操作的矩阵,参数k是指定对角线的偏移量。当k=0时,表示对角线上元素也包含在上三角矩阵中;当k>0时表示对角线上方k个元…

    python 2023年5月14日
    00
  • Python中多个数组行合并及列合并的方法总结

    Python中多个数组行合并及列合并的方法总结 在Python中,我们经常需要将多个数组的行或列进行合并。本文将详细讲解Python中多个数组行合并及列合并的方法,并提供两个示例。 使用numpy合并多个数组的行或列 在numpy中,我们可以使用concatenate函数来合并多个数组的行或列。concatenate函数接受一个元组作为参数,该元组包含要合并…

    python 2023年5月14日
    00
  • 利用numba让python速度提升百倍

    利用 Numba 让 Python 速度提升百倍的完整攻略 Numba 是一个用于 Python 和 NumPy 的即时编译器,可以将 Python 代码转为本地机器代码,从而高代码的执行速度。在本文中,我们将介绍如何使用 Numba 来加速 Python 代码,并供两个示例来演示其效果。 安装 Numba 在使用 Numba 之前,我们需要先安装它。可以使…

    python 2023年5月14日
    00
  • Numpy中的数组和向量有什么区别?

    在数学上,向量是一个具有大小和方向的量,通常用于表示物理量或几何量,例如速度、力、位置等。而数组是一组按顺序排列的值的集合,通常用于存储数值数据,例如矩阵、图像等。 在Numpy中,数组(array)是一种多维的容器,可以容纳不同类型的数据。而向量(vector)则是一种特殊的数组,只能容纳单一类型的数据,通常是数值类型。 具体来说,向量是一个一维数组,通常…

    2023年2月27日
    00
  • python numpy库中数组遍历的方法

    在Python的NumPy库中,数组遍历是一个常见的操作,本文将详细讲解NumPy库中数组遍历的方法,包括使用for循环遍历数组、使用nditer函数历数组等方面。 使用for循环遍历数组 在Python中,可以使用for循环遍历数组中的每个元素。下面是示例: import numpy as np# 定义一个数组 a = np.array([1, 2, 3,…

    python 2023年5月14日
    00
  • numpy按列连接两个维数不同的数组方式

    在NumPy中,我们可以使用numpy.concatenate函数按列连接两个维数不同的数组。以下是按列连接两个维数不同的数组的详细攻略: numpy.concatenate函数 numpy.concatenate函数可以按列连接两个维数不同的数组。以下是numpy.concatenate函数的语法: numpy.concatenate((a1, a2, .…

    python 2023年5月14日
    00
合作推广
合作推广
分享本页
返回顶部