当前位置: 首页 > article >正文

python常见数组操作

Python中一些常见的数组操作的总结:

1. 基本操作

创建数组:

arr = [1, 2, 3, 4, 5]  # 列表创建
import numpy as np
arr_np = np.array([1, 2, 3, 4, 5])  # NumPy数组创建

访问元素:

element = arr[0]  # 访问第一个元素

切片:

sub_arr = arr[1:3]  # 访问第二个到第三个元素(不包括第三个)

长度:

length = len(arr)

2. 修改数组

添加元素:

arr.append(6)  # 在列表末尾添加元素
arr_np = np.append(arr_np, 6)  # 在NumPy数组末尾添加元素

插入元素:

arr.insert(0, 0)  # 在列表开头插入元素

删除元素:

del arr[0]  # 删除第一个元素
arr.pop()  # 删除并返回最后一个元素
arr.remove(2)  # 删除第一个出现的元素2

修改元素:

arr[0] = 10  # 修改第一个元素

3. 数组运算

数学运算:

arr_np2 = np.array([10, 20, 30, 40, 50])
addition = arr_np + arr_np2  # 元素相加
subtraction = arr_np - arr_np2  # 元素相减
multiplication = arr_np * arr_np2  # 元素相乘
division = arr_np / arr_np2  # 元素相除

累积运算:

sum_arr = np.sum(arr_np)  # 求和
prod_arr = np.prod(arr_np)  # 求积
mean_arr = np.mean(arr_np)  # 求平均值

4. 统计操作

最大值和最小值:

max_val = np.max(arr_np)  # 最大值
min_val = np.min(arr_np)  # 最小值

排序:

arr.sort()  # 列表排序
sorted_arr_np = np.sort(arr_np)  # NumPy数组排序

查找元素:

index = np.where(arr_np == 3)  # 查找元素3的索引

5. 形状操作

改变形状:

reshaped_arr = arr_np.reshape(2, 3)  # 改变NumPy数组形状

合并和分割:

concatenated_arr = np.concatenate((arr_np, arr_np2))  # 合并数组
split_arr = np.split(arr_np, 2)  # 分割数组

6. 布尔操作

逻辑运算:

bool_arr = arr_np > 3  # 创建布尔数组

布尔索引:

filtered_arr = arr_np[bool_arr]  # 根据布尔数组过滤元素

7. 线性代数

点积:

dot_product = np.dot(arr_np, arr_np2)

矩阵乘法:

matrix_product = np.matmul(arr_np.reshape(2, 3), arr_np2.reshape(3, 2))

当然,Python中的数组操作可以非常复杂和强大,特别是当你使用NumPy、SciPy、Pandas等库时。以下是一些更高级的数组操作:

8. 广播

NumPy会“广播”较小的数组以匹配较大数组的形状。

import numpy as np

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

result = a + b  # 广播使得a的形状变为(3, 1)并进行元素相加

9. 随机数生成

NumPy可以生成各种分布的随机数.

# 生成随机数
rand = np.random.rand(2, 3)  # 0到1之间的随机数
randn = np.random.randn(2, 3)  # 标准正态分布的随机数

10. 线性代数

NumPy和SciPy提供了大量的线性代数功能,包括矩阵分解、求解线性方程组等。

# 矩阵乘法
A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])
C = np.dot(A, B)

# 求解线性方程组
from scipy.linalg import solve
A = np.array([[3, 1], [1, 2]])
B = np.array([9, 8])
X = solve(A, B)

11. 傅里叶变换

NumPy和SciPy提供了傅里叶变换和逆变换的功能.

from scipy.fft import fft, ifft

x = np.array([0, 1, 0, 0])
y = fft(x)
x_reconstructed = ifft(y)

12. 信号处理

SciPy提供了信号处理模块,可以进行滤波、卷积等操作。

from scipy import signal

# 滤波
data = np.array([0, 1, 2, 3, 4, 5])
filtered_data = signal.convolve(data, [1, 1, 1], mode='same')

13. 多维数组索引和切片

NumPy允许你使用复杂的索引和切片操作来处理多维数组。

arr = np.arange(24).reshape(2, 3, 4)
# 使用布尔索引
bool_idx = arr > 10
arr[bool_idx] = 10

# 使用花式索引
x, y, z = np.indices((2, 3, 4))
arr[x + 1, y + 1, z + 1] = 42

http://www.kler.cn/a/453471.html

相关文章:

  • 使用Grafana中按钮插件实现收发HTTP请求
  • 机器学习(二)-简单线性回归
  • (亲测)frp对外提供简单的文件访问服务-frp静态文件效果
  • upload-labs关卡记录12
  • 《AI智能体》——魔搭工作流模式
  • YOLOv9-0.1部分代码阅读笔记-benchmarks.py
  • Linux-----进程处理(子进程创建)
  • Java项目中Oracle数据库开发过程中相关内容
  • AI绘图丨中国风 古典 产品展台电商场景第三弹(附关键词)
  • 路由策略
  • 学习C++:关键字
  • 每天40分玩转Django:Django静态文件
  • SLAM/数字图象处理基础
  • 【QT常用技术讲解】QTablewidget点击表头自动排序的两种方式
  • Map接口 及其 实现类(HashMap, TreeMap)
  • 基础组件:
  • MySQL为什么选择使用B+树作为索引结构?
  • 如何使用React,透传各类组件能力/属性?
  • python脚本:批量提取excel数据
  • WebRTC服务质量(10)- Pacer机制(02) RoundRobinPacketQueue
  • Unity自定义Inspector属性名特性以及特性自定义布局问题
  • 散户应该持有哪些代币?
  • 计算机网络 (8)物理层的传输方式
  • HashMap源码深度解析(JDK 1.8)
  • 鸿蒙项目云捐助第二十二讲云捐助项目物联网IoT鸿蒙端的代码实现
  • C 实现植物大战僵尸(一)