Python Numpy中ndarray的常见操作方法有哪些

发布时间:2023-05-18 16:26:37 作者:iii
来源:亿速云 阅读:165

Python Numpy中ndarray的常见操作方法有哪些

目录

  1. 引言
  2. Numpy简介
  3. ndarray的基本概念
  4. 创建ndarray
  5. ndarray的属性
  6. ndarray的索引与切片
  7. ndarray的变形与重塑
  8. ndarray的数学运算
  9. ndarray的统计操作
  10. ndarray的广播机制
  11. ndarray的排序与搜索
  12. ndarray的文件操作
  13. ndarray的高级操作
  14. 总结

引言

在数据科学和机器学习领域,Python的Numpy库是一个不可或缺的工具。Numpy提供了高效的多维数组对象ndarray,以及大量的数学函数来操作这些数组。本文将详细介绍Numpy中ndarray的常见操作方法,帮助读者更好地理解和使用Numpy。

Numpy简介

Numpy(Numerical Python)是Python中用于科学计算的核心库之一。它提供了一个强大的N维数组对象ndarray,以及用于数组操作的函数。Numpy的核心功能包括:

ndarray的基本概念

ndarray是Numpy中的核心数据结构,它是一个多维数组对象。与Python中的列表不同,ndarray中的元素必须是相同类型的,这使得它在数值计算中更加高效。

ndarray的特点

创建ndarray

在Numpy中,有多种方法可以创建ndarray。以下是几种常见的创建方法:

1. 从Python列表创建

import numpy as np

# 从Python列表创建一维数组
arr1 = np.array([1, 2, 3, 4, 5])
print(arr1)

# 从Python列表创建二维数组
arr2 = np.array([[1, 2, 3], [4, 5, 6]])
print(arr2)

2. 使用arange函数创建

arange函数类似于Python的range函数,但返回的是一个ndarray

# 创建一个从0到9的一维数组
arr = np.arange(10)
print(arr)

3. 使用zerosones函数创建

zeros函数创建一个全为0的数组,ones函数创建一个全为1的数组。

# 创建一个3x3的全0数组
arr_zeros = np.zeros((3, 3))
print(arr_zeros)

# 创建一个2x2的全1数组
arr_ones = np.ones((2, 2))
print(arr_ones)

4. 使用eye函数创建单位矩阵

eye函数创建一个单位矩阵。

# 创建一个3x3的单位矩阵
arr_eye = np.eye(3)
print(arr_eye)

5. 使用linspace函数创建等间隔数组

linspace函数创建一个等间隔的数组。

# 创建一个从0到1的等间隔数组,包含5个元素
arr_linspace = np.linspace(0, 1, 5)
print(arr_linspace)

ndarray的属性

ndarray对象有许多属性,可以帮助我们了解数组的结构和内容。以下是几个常用的属性:

1. shape

shape属性返回数组的维度。

arr = np.array([[1, 2, 3], [4, 5, 6]])
print(arr.shape)  # 输出 (2, 3)

2. dtype

dtype属性返回数组元素的数据类型。

arr = np.array([1, 2, 3])
print(arr.dtype)  # 输出 int64

3. size

size属性返回数组中元素的总数。

arr = np.array([[1, 2, 3], [4, 5, 6]])
print(arr.size)  # 输出 6

4. ndim

ndim属性返回数组的维度数。

arr = np.array([[1, 2, 3], [4, 5, 6]])
print(arr.ndim)  # 输出 2

5. itemsize

itemsize属性返回数组中每个元素的大小(以字节为单位)。

arr = np.array([1, 2, 3], dtype=np.float64)
print(arr.itemsize)  # 输出 8

ndarray的索引与切片

ndarray的索引与切片操作与Python列表类似,但支持多维数组的操作。

1. 一维数组的索引与切片

arr = np.array([1, 2, 3, 4, 5])

# 索引
print(arr[0])  # 输出 1

# 切片
print(arr[1:4])  # 输出 [2, 3, 4]

2. 二维数组的索引与切片

arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])

# 索引
print(arr[0, 1])  # 输出 2

# 切片
print(arr[:2, 1:])  # 输出 [[2, 3], [5, 6]]

3. 布尔索引

布尔索引允许我们根据条件选择数组中的元素。

arr = np.array([1, 2, 3, 4, 5])
mask = arr > 2
print(arr[mask])  # 输出 [3, 4, 5]

4. 花式索引

花式索引允许我们使用整数数组来索引数组。

arr = np.array([1, 2, 3, 4, 5])
indices = [0, 2, 4]
print(arr[indices])  # 输出 [1, 3, 5]

ndarray的变形与重塑

ndarray的变形与重塑操作可以帮助我们改变数组的形状。

1. reshape函数

reshape函数可以改变数组的形状。

arr = np.arange(9)
arr_reshaped = arr.reshape(3, 3)
print(arr_reshaped)

2. resize函数

resize函数可以改变数组的形状,并且可以改变数组的大小。

arr = np.arange(9)
arr.resize(3, 3)
print(arr)

3. ravel函数

ravel函数将多维数组展平为一维数组。

arr = np.array([[1, 2, 3], [4, 5, 6]])
arr_raveled = arr.ravel()
print(arr_raveled)

4. flatten函数

flatten函数与ravel函数类似,但返回的是数组的副本。

arr = np.array([[1, 2, 3], [4, 5, 6]])
arr_flattened = arr.flatten()
print(arr_flattened)

5. transpose函数

transpose函数可以对数组进行转置操作。

arr = np.array([[1, 2, 3], [4, 5, 6]])
arr_transposed = arr.transpose()
print(arr_transposed)

ndarray的数学运算

Numpy提供了丰富的数学运算函数,可以对ndarray进行各种数学操作。

1. 基本运算

arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])

# 加法
print(arr1 + arr2)  # 输出 [5, 7, 9]

# 减法
print(arr1 - arr2)  # 输出 [-3, -3, -3]

# 乘法
print(arr1 * arr2)  # 输出 [4, 10, 18]

# 除法
print(arr1 / arr2)  # 输出 [0.25, 0.4, 0.5]

2. 矩阵乘法

使用dot函数进行矩阵乘法。

arr1 = np.array([[1, 2], [3, 4]])
arr2 = np.array([[5, 6], [7, 8]])
print(np.dot(arr1, arr2))

3. 数学函数

Numpy提供了许多数学函数,如sincosexp等。

arr = np.array([0, np.pi/2, np.pi])
print(np.sin(arr))  # 输出 [0., 1., 0.]

4. 聚合函数

聚合函数可以对数组进行求和、求平均值等操作。

arr = np.array([1, 2, 3, 4, 5])

# 求和
print(np.sum(arr))  # 输出 15

# 求平均值
print(np.mean(arr))  # 输出 3.0

# 求最大值
print(np.max(arr))  # 输出 5

# 求最小值
print(np.min(arr))  # 输出 1

ndarray的统计操作

Numpy提供了许多统计函数,可以对数组进行统计分析。

1. 方差与标准差

arr = np.array([1, 2, 3, 4, 5])

# 方差
print(np.var(arr))  # 输出 2.0

# 标准差
print(np.std(arr))  # 输出 1.4142135623730951

2. 协方差与相关系数

arr1 = np.array([1, 2, 3, 4, 5])
arr2 = np.array([5, 4, 3, 2, 1])

# 协方差
print(np.cov(arr1, arr2))

# 相关系数
print(np.corrcoef(arr1, arr2))

3. 直方图

histogram函数可以计算数组的直方图。

arr = np.array([1, 2, 2, 3, 3, 3, 4, 4, 4, 4])
hist, bin_edges = np.histogram(arr, bins=4)
print(hist)  # 输出 [1, 2, 3, 4]
print(bin_edges)  # 输出 [1., 1.75, 2.5, 3.25, 4.]

ndarray的广播机制

广播机制是Numpy中一种强大的功能,它允许不同形状的数组进行数学运算。

1. 广播的基本规则

2. 广播的示例

arr1 = np.array([[1, 2, 3], [4, 5, 6]])
arr2 = np.array([10, 20, 30])

# 广播
print(arr1 + arr2)  # 输出 [[11, 22, 33], [14, 25, 36]]

ndarray的排序与搜索

Numpy提供了排序和搜索函数,可以对数组进行排序和查找操作。

1. 排序

arr = np.array([3, 1, 2, 4, 5])

# 排序
arr_sorted = np.sort(arr)
print(arr_sorted)  # 输出 [1, 2, 3, 4, 5]

2. 搜索

arr = np.array([1, 2, 3, 4, 5])

# 查找元素的位置
index = np.where(arr == 3)
print(index)  # 输出 (array([2]),)

3. 查找最大值和最小值的位置

arr = np.array([1, 2, 3, 4, 5])

# 查找最大值的位置
max_index = np.argmax(arr)
print(max_index)  # 输出 4

# 查找最小值的位置
min_index = np.argmin(arr)
print(min_index)  # 输出 0

ndarray的文件操作

Numpy提供了将数组保存到文件和从文件加载数组的功能。

1. 保存数组到文件

arr = np.array([1, 2, 3, 4, 5])
np.save('arr.npy', arr)

2. 从文件加载数组

arr_loaded = np.load('arr.npy')
print(arr_loaded)

3. 保存和加载文本文件

arr = np.array([1, 2, 3, 4, 5])
np.savetxt('arr.txt', arr)

arr_loaded = np.loadtxt('arr.txt')
print(arr_loaded)

ndarray的高级操作

Numpy还提供了一些高级操作,如数组的拼接、分割、重复等。

1. 数组的拼接

arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])

# 水平拼接
arr_hstack = np.hstack((arr1, arr2))
print(arr_hstack)  # 输出 [1, 2, 3, 4, 5, 6]

# 垂直拼接
arr_vstack = np.vstack((arr1, arr2))
print(arr_vstack)  # 输出 [[1, 2, 3], [4, 5, 6]]

2. 数组的分割

arr = np.array([1, 2, 3, 4, 5, 6])

# 水平分割
arr_split = np.hsplit(arr, 3)
print(arr_split)  # 输出 [array([1, 2]), array([3, 4]), array([5, 6])]

3. 数组的重复

arr = np.array([1, 2, 3])

# 重复数组
arr_repeated = np.repeat(arr, 3)
print(arr_repeated)  # 输出 [1, 1, 1, 2, 2, 2, 3, 3, 3]

4. 数组的堆叠

arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])

# 堆叠
arr_stack = np.stack((arr1, arr2))
print(arr_stack)  # 输出 [[1, 2, 3], [4, 5, 6]]

总结

本文详细介绍了Numpy中ndarray的常见操作方法,包括创建数组、数组的属性、索引与切片、变形与重塑、数学运算、统计操作、广播机制、排序与搜索、文件操作以及高级操作。掌握这些操作可以帮助我们更高效地进行数据分析和科学计算。希望本文对读者有所帮助,并激发大家对Numpy的进一步探索。

推荐阅读:
  1. python 操作 redis + 消息队列使用例子
  2. python函数默认值和全局变量遇到的一些问题

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

python numpy ndarray

上一篇:如何使用Python编写一个刷题练习系统

下一篇:Vue3中样式渗透:deep()无效如何解决

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》