Numpy常见操作总结

        NumPy 提供高效的多维数组对象 (ndarray) 用于大规模数据处理。它包含丰富的数学函数库,支持线性代数、傅里叶变换和随机数生成等操作。

        以下代码内容包括对于数组对象的查看、数据处理等操作

import numpy as np# 创建一个二维和三维数组
array_e1 = np.array([[1, 2, 3], [4, 5, 6]])
array_e2 = np.array([[[1, 2, 3], [4, 5, 6]],[[7, 8, 9], [10, 11, 12]]])print("array_e1=\n", array_e1, "\n")
print("array_e2=\n", array_e2, "\n")# array.ndim 查看数组维度
print("array_e1_dim=", array_e1.ndim)
print("array_e2_dim=", array_e2.ndim, "\n")# array.shape 数组的形状
print("array_e1_shape=", array_e1.shape)
print("array_e2_shaoe=", array_e2.shape, "\n")# array.dtype 数组的数据类型
print("array_e1_dtype=", array_e1.dtype)
print("array_e2_dtype=", array_e2.dtype, "\n")# array.reshape(new_shape)  数组重塑形状
array_e1_reshape = array_e1.reshape(3, 2)
print("array_e1_reshape=\n", array_e1_reshape, "\n")# array.T 数组转置
array_e1_transposed = array_e1.T
print("array_e1_transposed=\n", array_e1_transposed, "\n")# array.flatten() 将多维数组一维化
array_e2_flatten = array_e2.flatten()
print("array_e2_flatten=", array_e2_flatten, "\n")# np.concatenate((array1, array2), axis=0) 沿指定轴拼接数组
array_e1_concatenate0 = np.concatenate((array_e1, array_e1), axis=0)        # 接在三四行
array_e1_concatenate1 = np.concatenate((array_e1, array_e1), axis=1)        # 接在四五六列
print("array_e1_concatenate0=\n", array_e1_concatenate0, "\n")
print("array_e1_concatenate1=\n", array_e1_concatenate1, "\n")# np.split(array, indices_or_sections, axis=0) 分割多维数组
# 三维数组想象成多个二维数组的平面上下叠放
array_e2_split0 = np.split(array_e2, 2, axis=0)                             # 按面的维度切
array_e2_split1 = np.split(array_e2, 2, axis=1)                             # 按行的维度切
array_e2_split2 = np.split(array_e2, 3, axis=2)                             # 按列的维度切
print("array_e2_split0=\n", array_e2_split0, "\n")
print("array_e2_split1=\n", array_e2_split1, "\n")
print("array_e2_split2=\n", array_e2_split2, "\n")# 数组求和,维度参数的选择分别代表总和、行和、列和
sum_all = np.sum(array_e1, axis=None)
sum_axis0 = np.sum(array_e1, axis=0)
sum_axis1 = np.sum(array_e1, axis=1)
print("sum_all =", sum_all, "\nsum_axis0 =", sum_axis0, "\nsum_axis1 =", sum_axis1, "\n")# 下述函数用法与求和一致
np.mean(array_e1, axis=None)
np.max(array_e1, axis=None)
np.min(array_e1, axis=None)
np.std(array_e1, axis=None)         # 标准差
np.var(array_e1, axis=None)         # 方差array_e3 = np.array([1, 2, 2, 3, 3, 3, 4, 4, 4, 4])
array_e4 = np.array([9, 3, 7, 1, 8, 0, 7, 1, 2])# 数组内的元素(仅展示一次)
value_e3_unique = np.unique(array_e3)
print("value_e3_unique =", value_e3_unique, "\n")# 数组内各元素的个数,会存在对 数值0 的计数
value_e3_count = np.bincount(array_e3)
print("value_e3_count =", value_e3_count, "\n")# 筛选数组内的元素,返回布尔值,可通过布尔值输出满足条件的元素
array_e4_condition = np.array(array_e4 > 2)
print("array_e4_condition =", array_e4_condition, "\n")
print("array_e4_condition_value =", array_e4[array_e4_condition], "\n")# 根据条件返回数组内所需的元素,可根据True和False返回不同的值
array_e4_condition_value0 = np.where(array_e4_condition, array_e4, None)
print("array_e4_condition_value0 =", array_e4_condition_value0, "\n")# Numpy的广播机制用于对不同形状的数组进行算术运算
array_e5 = np.array([1, 2, 3])
array_e6 = np.array([[4], [5], [6]])
array_broadcast = array_e5 + array_e6
print("array_broadcast =\n", array_broadcast, "\n")# np.dot() 一维的运用为数组内积
array_dot55 = np.dot(array_e5, array_e5)                # 数值
print("array_dot55 =", array_dot55, "\n")# np.dot() 二维以上的运用为矩阵乘法
array_e7 = np.array([[1, 2, 3], [4, 5, 6]])             # 两行三列
array_e8 = np.array([[1, 2], [3, 4], [5, 6]])           # 三行两列
array_dot78 = np.dot(array_e7, array_e8)                # 两行两列
array_dot87 = np.dot(array_e8, array_e7)                # 三行三列
print("array_dot78 =\n", array_dot78, "\n")
print("array_dot87 =\n", array_dot87, "\n")# np.matmul(array1, array2) 用法与np.dot() 二维以上的一致
array_matmul78 = np.matmul(array_e7, array_e8)                  # 两行两列
array_matmul87 = np.matmul(array_e8, array_e7)                  # 三行三列
print("array_matmul78 =\n", array_matmul78, "\n")
print("array_matmul87 =\n", array_matmul87, "\n")# np.cumsum() 累积和运算
array_e7_cumsum0 = np.cumsum(array_e7, axis=0)                  # 沿行累加
array_e7_cumsum1 = np.cumsum(array_e7, axis=1)                  # 沿列累加
print("array_e7_cumsum0 =\n", array_e7_cumsum0, "\n")
print("array_e7_cumsum1 =\n", array_e7_cumsum1, "\n")# np.cumprod() 累积积运算
array_e7_cumprod0 = np.cumprod(array_e7, axis=0)                # 沿行累乘
array_e7_cumprod1 = np.cumprod(array_e7, axis=1)                # 沿列累乘
print("array_e7_cumprod0 =\n", array_e7_cumprod0, "\n")
print("array_e7_cumprod1 =\n", array_e7_cumprod1, "\n")# np.diff(array, n=1, axis=-1) 差分运算,其中n表示阶数,axis=-1表示最后一个轴
# np.trapz(array, dx=1.0, axis=-1) 积分运算,使用一致
array_e7_diff01 = np.diff(array_e7, n=1, axis=0)                # 沿行一阶差分
print("array_e7_diff01 =\n", array_e7_diff01, "\n")
array_e7_diff11 = np.diff(array_e7, n=1, axis=1)                
# 沿列一阶差分
print("array_e7_diff11 =\n", array_e7_diff11, "\n")
array_e7_diff02 = np.diff(array_e7, n=2, axis=0)                
# 沿行二阶差分,因为数组行数较少,不足以进行二阶差分,因此返回空数组
print("array_e7_diff02 =\n", array_e7_diff02, "\n")
array_e7_diff12 = np.diff(array_e7, n=2, axis=1)                
# 沿列二阶差分,因为一阶差分是常数,所以二阶即为对一阶的求导,为0
print("array_e7_diff12 =\n", array_e7_diff12, "\n")# 计算数组的 傅里叶变换 和 逆傅里叶变换
array_e7_fft = np.fft.fft(array_e7)
print("array_e7_fft =\n", array_e7_fft, "\n")
array_e7_fft_ifft = np.fft.ifft(array_e7_fft)
print("array_e7_fft_ifft =\n", array_e7_fft_ifft, "\n")# np.linalg.inv(array) 求逆矩阵,AB=I,A和B互为逆矩阵,且均为方阵
array_e9 = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
array_e9_inv = np.linalg.inv(array_e9)
print("array_e9_inv =\n", array_e9_inv, "\n")# np.linalg.eig(array) 求特征值和特征向量
# Ab = λb   其中 b为特征向量(非零向量),λ为特征值(标量)
# array_e9_eig_values 包含全部特征值
# array_e9_eig_vectors 包含全部与特征值对应的特征向量
array_e9_eig_values, array_e9_eig_vectors = np.linalg.eig(array_e9)
print("array_e9_eig_values =", array_e9_eig_values, "\n")
print("array_e9_eig_vectors =\n", array_e9_eig_vectors, "\n")# np.linalg.svd(array) 奇异值分解
# A = UQ(VT)
# 其中,U表示 m×m 的正交矩阵,列向量称为左奇异向量
# Q表示一个 𝑚×𝑛 的对角矩阵,对角线上的 非负实数 称为奇异值,且奇异值个数等于A的秩,并按降序排列。奇异值表示了矩阵A在其对应的奇异向量方向上的“拉伸”或“压缩”的程度
# (VT)表示V的转置矩阵,V表示一个 n×n 的正交矩阵,列向量称为右奇异向量
array_e9_svd_U, array_e9_svd_S, array_e9_svd_VT = np.linalg.svd(array_e9)
print("array_e9_svd_U =\n", array_e9_svd_U, "\n")
print("array_e9_svd_S =\n", array_e9_svd_S, "\n")           # 对角线上的元素
print("array_e9_svd_VT =\n", array_e9_svd_VT, "\n")# np.linalg.matrix_rank(array) 矩阵的秩
array_e9_rank = np.linalg.matrix_rank(array_e9)
print("array_e9_rank =", array_e9_rank, "\n")
# 此处秩为2 < array_e9_svd_S的个数3       注: array_e9_svd_S的第三个值很小
# 原因: 如果奇异值非常小但不是严格的零,它们可能在数值上被认为是零,导致数值秩小于理论秩# np.linalg.norm(array, ord=None) 求范数(Norm)是一个函数,它赋予每个数组一个非负长度或大小,用于衡量数组大小
# L2范数(欧几里得范数):数组元素平方和的平方根  (默认)
array_e9_norm_L2 = np.linalg.norm(array_e9, ord=None, axis=0)           
# 等同于 array_e9_norm_L2 = np.linalg.norm(array_e9, ord=2, axis=0)
print("array_e9_norm_L2 =\n", array_e9_norm_L2, "\n")# L1 范数:数组元素绝对值的和。
array_e9_norm_L1 = np.linalg.norm(array_e9, ord=1, axis=0)              
# 沿行计算,即三行叠加的结果
print("array_e9_norm_L1 =\n", array_e9_norm_L1, "\n")# 无穷范数:数组元素绝对值的最大值
array_e9_norm_inf = np.linalg.norm(array_e9, ord=np.inf,  axis=0)       
# 沿行比较
print("array_e9_norm_inf =\n", array_e9_norm_inf, "\n")# np.linalg.cond(array) 计算条件数,一个衡量矩阵对特定运算(如线性方程求解)敏感度的指标
# 如果一个矩阵的条件数很高,意味着它在计算中容易受到小的扰动影响,导致结果的较大误差,不可靠
array_e9_cond = np.linalg.cond(array_e9)
print("array_e9_cond =", array_e9_cond, "\n")# np.linalg.solve(A, b) 求解线性方程组 Ax = b
# 其中 矩阵A必须是方阵 且 必须不是奇异的,即它需要有唯一的解
# 奇异矩阵: 不满秩的,行列式为0,没有逆矩阵,条件数无限大
array_A = np.array([[3, 1], [1, 2]])
array_b = np.array([9, 8])
array_x = np.linalg.solve(array_A, array_b)
print("array_x =", array_x, "\n")# np.linalg.det() 计算行列式,只对于方阵
array_A_det = np.linalg.det(array_A)
print("array_A_det =", array_A_det, "\n")

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/49186.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

有序充电在新型电力系统下的解决方案

摘要&#xff1a;近年来,新能源汽车的销量快速增长,相应的充电桩数量也急剧增加,这一现象可能会给电网和变压器造成负担,与此同时&#xff0c;新型电力系统下以光伏为主的分布式发电系统占比也在逐渐提高&#xff0c;新能源的不稳定性叠加充电需求的不确定性会给电网带来严峻的…

Unity发布XR中用于worldbuilding的全新电子书

通过身临其境的虚拟领域开始旅程&#xff0c;在维度之间传送&#xff0c;或将数字奇迹与现实世界融合——虚拟现实(VR)和混合现实(MR)的千万种可能性将邀请创作者把他们的想象力带入生活。 Unity发布的最新版综合指南将帮助有抱负的创作者和经验丰富的开发者深入研究和理解构建…

洛谷看不了别人主页怎么办

首先&#xff0c;我们先点进去 可以看到&#xff0c;看不了一点 那我们看向上方&#xff0c;就可以发现&#xff0c;我们那有个URL&#xff0c;选中 把光标插到n和/中间 把.cn删了&#xff0c;变成国际服 我们就可以看了 但是国际服还没搭建完&#xff0c;跳转的时候可能503&a…

融云 2024 ChinaJoy | 你有一个必逛的展位 @W4 馆 B786

惊喜闪现&#x1f447; 打开抖音搜索【融云】 关注融云官抖&#xff0c;可到展位领取好礼一份 更有惊喜内容不定时掉落~

Python从0到100(四十六):实现管理员登录及测试功能

前言&#xff1a; 零基础学Python&#xff1a;Python从0到100最新最全教程。 想做这件事情很久了&#xff0c;这次我更新了自己所写过的所有博客&#xff0c;汇集成了Python从0到100&#xff0c;共一百节课&#xff0c;帮助大家一个月时间里从零基础到学习Python基础语法、Pyth…

“微软蓝屏”事件暴露了网络安全哪些问题?

网络安全的隐性威胁&#xff1a;从“微软蓝屏”事件看全球IT基础设施的脆弱性 ---------------------------------------------------------------------------------------------------------------------------- 一、事件回顾 近日&#xff0c;由微软视窗系统软件更新引发的…

Python设计模式:巧用元类创建单例模式!

✨ 内容&#xff1a; 今天我们来探讨一个高级且实用的Python概念——元类&#xff08;Metaclasses&#xff09;。元类是创建类的类&#xff0c;它们可以用来控制类的行为。通过本次练习&#xff0c;我们将学习如何使用元类来实现单例模式&#xff0c;确保某个类在整个程序中只…

Adobe Dimension(DN)安装包软件下载

目录 一、软件简介 二、软件下载 三、注意事项 四、软件功能 五、常用快捷键 快捷键&#xff1a; 一、软件简介 Adobe Dimension&#xff08;简称DN&#xff09;是Adobe公司推出的一款三维设计和渲染软件。与一般的3D绘图软件相比&#xff0c;DN在操作界面和功能上有所不…

每天一个数据分析题(四百四十三)- 标签与指标

标签系统有许多分类&#xff0c;从实现规则上可以分为三类&#xff1a;基于统计类的、基于规则类的、基于挖掘技术的&#xff0c;下面对于标签的分类错误的是&#xff08;&#xff09; A. APP的使用时长属于基于规则的标签 B. “交易活跃”标签属于基于规则的标签 C. 通过使…

国产JS库(js-tool-big-box)7月度总结

js-tool-big-box开发已经有3个月了&#xff0c;团队内的小伙伴进行了热烈的讨论&#xff0c;持续做了功能迭代。小伙伴们也做了艰苦卓绝的文档分享&#xff0c;有纯功能分享类的&#xff0c;有带有小故事的&#xff0c;有朋友们利用自己独自网站分发分享的。7月份快要结束了&am…

sip六大头域深度解析 - Max-Forwards头域

SIP&#xff08;Session Initiation Protocol&#xff0c;会话初始协议&#xff09;中的Max-Forwards头域是一个用于限制SIP请求消息在SIP网络中能够经过的实体&#xff08;如代理服务器、gateway&#xff09;的最大数目的头域。 基本概念 功能&#xff1a;Max-Forwards头域用…

FPGA DNA 获取 DNA_PORT

FPGA DNA DNA 是 FPGA 芯片的唯一标识&#xff0c; FPGA 都有一个独特的 ID &#xff0c;也就是 Device DNA &#xff0c;这个 ID 相当于我们的身份证&#xff0c;在 FPGA 芯片生产的时候就已经固定在芯片的 eFuse 寄存器中&#xff0c;具有不可修改的属性。在 xilinx 7series…

基于java 精品课程教学网站的设计与实现

1 引言 当今时代是飞速发展的信息时代。在各行各业中离不开信息处理&#xff0c;计算机被广泛应用于B/S系统环境。计算机的好处在于它能够进行信息管理。使用计算机进行信息控制&#xff0c;不仅提高了工作效率&#xff0c;而且大大的提高了安全性。 对于复杂的信息管理&…

算法——滑动窗口(day7)

904.水果成篮 904. 水果成篮 - 力扣&#xff08;LeetCode&#xff09; 题目解析&#xff1a; 根据题意我们可以看出给了我们两个篮子说明我们在开始采摘到结束的过程中只能有两种水果的种类&#xff0c;又要求让我们返回收集水果的最大数目&#xff0c;这不难让我们联想到题目…

Go channel实现原理详解(源码解读)

文章目录 Go channel详解Channel 的发展Channel 的应用场景Channel 基本用法Channel 的实现原理chan 数据结构初始化sendrecvclose使用 Channel 容易犯的错误总结Go channel详解 Channel 是 Go 语言内建的 first-class 类型,也是 Go 语言与众不同的特性之一。Channel 让并发消…

Stateflow中的状态转换表

状态转换表是表达顺序模态逻辑的另一种方式。不要在Stateflow图表中以图形方式绘制状态和转换&#xff0c;而是使用状态转换表以表格格式表示模态逻辑。 使用状态转换表的好处包括&#xff1a; 易于对类列车状态机进行建模&#xff0c;其中模态逻辑涉及从一个状态到其邻居的转换…

软件测试09 自动化测试技术(Selenium)

重点/难点 重点&#xff1a;理解自动化测试的原理及其流程难点&#xff1a;Selinum自动化测试工具的使用 目录 系统测试 什么是系统测试什么是功能测试什么是性能测试常见的性能指标有哪些 自动化测试概述 测试面临的问题 测试用例数量增多&#xff0c;工作量增大&#xff…

JSON字符串介绍

JSON数据格式 JSON&#xff0c;其实就是一种特殊格式的字符串 JSON的两种数据格式 JSON对象 JSON数组 JSON数组 JSON数组格式&#xff1a; [元素1 &#xff0c;元素2&#xff0c;元素3&#xff0c;元素4] JSON数组中的元素可以是不同的数据类型 &#xff0c; 包括&#xff1a…

ROS2入门到精通—— 1-7 ROS2实战:行为树详解

1 行为树简介 行为树&#xff1a;一种用于描述和执行复杂系统中行为的图形化结构&#xff0c;Nav2中&#xff0c;行为树用于定义机器人导航的决策和行为 &#xff08;1&#xff09;一个名为 "tick "的信号被发送到树的根部&#xff0c;并在树中传播&#xff0c;直到它…

七天打造一套量化交易系统:Day2-量化交易策略基本模型及要点

七天打造一套量化交易系统&#xff1a;Day2-量化交易策略基本模型及要点 前期回顾趋势型策略模型原理收益分布重点&#xff1a;什么因素能改进策略&#xff08;截断亏损&#xff0c;让利润奔跑&#xff09;要点总结 均值回复型策略模型原理收益分布重点&#xff1a;避免大额亏损…