NumPy 二维数组的创建与核心操作指南
📅 2026/7/15 2:05:56
👁️ 次浏览
1. NumPy二维数组的创建方法第一次接触NumPy二维数组时我完全被它强大的功能震撼到了。记得当时需要处理一个简单的学生成绩表用Python原生列表操作起来特别麻烦直到发现了NumPy这个神器。今天我就把自己这些年积累的NumPy二维数组使用经验分享给大家保证让你少走弯路。创建二维数组最基础的方法就是从Python列表转换。比如我们要创建一个3x3的矩阵import numpy as np matrix np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])这个方法简单直接但有个小坑要注意列表中的每个子列表长度必须一致否则会创建出一个包含列表的对象数组而不是规整的二维数组。我曾经就因为这个踩过坑调试了半天才发现问题。更专业的做法是使用NumPy提供的专用创建函数。比如np.zeros()可以创建全零数组zeros_matrix np.zeros((3, 4)) # 创建3行4列的全零矩阵np.ones()则是创建全1数组用法类似。这两个函数特别适合做初始化我经常用它们来预分配内存空间比动态扩展列表效率高多了。如果需要创建指定范围的数值序列np.arange()配合reshape()是个好选择seq_matrix np.arange(12).reshape(3, 4) # 创建0-11的3x4矩阵这里有个实用技巧reshape时可以用-1来自动计算某一维的大小。比如np.arange(12).reshape(3, -1)会自动计算出列数为4。随机数组在实际项目中特别有用。NumPy提供了多种随机生成方式random_matrix np.random.rand(3, 3) # 0-1均匀分布 normal_matrix np.random.randn(3, 3) # 标准正态分布 randint_matrix np.random.randint(0, 10, (3, 3)) # 指定范围的随机整数我经常用随机数组来做算法测试和模拟数据。比如测试一个图像处理算法时就可以先用随机数组模拟图像数据。2. 数组的索引与切片技巧掌握了创建方法后接下来就是如何高效地访问和修改数组元素了。NumPy的索引系统非常灵活但刚开始可能会有点晕我来帮你理清楚。最基本的索引方式就是行列下标matrix np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) print(matrix[1, 2]) # 输出6 (第2行第3列)注意NumPy使用从0开始的索引和Python列表一致。这里有个常见错误是把行列顺序搞反记住总是先行后列。切片操作是处理二维数组的利器。比如要获取前两行print(matrix[:2]) # 前两行获取第2列print(matrix[:, 1]) # 所有行的第2列我特别喜欢NumPy的步长切片功能比如每隔一行取一列print(matrix[::2, ::2]) # 每隔一行一列取样高级索引是NumPy的一大亮点。布尔型索引可以根据条件筛选数据mask matrix 5 print(matrix[mask]) # 输出大于5的元素这在数据清洗时特别有用比如可以快速筛选出异常值。花式索引(Fancy indexing)可以用整数数组来索引print(matrix[[0, 2], [1, 0]]) # 输出(0,1)和(2,0)位置的元素这个技巧在机器学习中提取特定样本时非常方便。3. 数组的数学运算NumPy最强大的地方在于它的向量化运算能力。传统的循环计算在NumPy中可以简化为一行代码。基本的算术运算都是元素级别的a np.array([[1, 2], [3, 4]]) b np.array([[5, 6], [7, 8]]) print(a b) # 对应元素相加 print(a * b) # 对应元素相乘(不是矩阵乘法)注意这里的乘法是元素相乘不是矩阵乘法。矩阵乘法要用np.dot()或运算符print(np.dot(a, b)) # 矩阵乘法 print(a b) # Python 3.5支持的矩阵乘法运算符统计运算在日常数据分析中必不可少data np.random.randn(100, 5) # 100个样本5个特征 print(np.mean(data, axis0)) # 计算每列的均值 print(np.std(data, axis1)) # 计算每行的标准差 print(np.sum(data)) # 所有元素求和axis参数特别重要axis0表示沿列计算axis1表示沿行计算。我刚开始经常搞混后来记成axis0是竖着压缩axis1是横着压缩就好记多了。广播机制是NumPy的另一个魔法特性。它允许不同形状的数组进行运算a np.array([[1, 2], [3, 4]]) b np.array([10, 20]) print(a b) # b被广播到与a相同的形状这个特性让我们可以避免很多显式的循环和复制操作代码既简洁又高效。4. 实用操作技巧在实际项目中掌握一些NumPy的高级技巧可以事半功倍。下面分享几个我常用的技巧。数组转置和轴交换matrix np.arange(6).reshape(2, 3) print(matrix.T) # 转置 print(matrix.swapaxes(0, 1)) # 交换轴处理缺失值时可以用掩码数组data np.array([1, 2, -999, 4]) masked_data np.ma.masked_equal(data, -999) print(masked_data.mean()) # 自动忽略缺失值数组拼接也很常用a np.array([[1, 2], [3, 4]]) b np.array([[5, 6]]) # 垂直拼接 print(np.vstack((a, b))) # 水平拼接 print(np.hstack((a, np.array([[7], [8]]))))内存优化方面NumPy提供了np.ascontiguousarray()来确保数组内存连续布局这对性能敏感的应用很重要。最后分享一个性能优化技巧尽量避免在循环中频繁操作NumPy数组尽量使用向量化操作。比如计算欧式距离矩阵# 不好的做法 def slow_dist_matrix(x): n len(x) dist np.zeros((n, n)) for i in range(n): for j in range(n): dist[i, j] np.sqrt(np.sum((x[i] - x[j])**2)) return dist # 好的向量化做法 def fast_dist_matrix(x): xx np.sum(x**2, axis1) xy np.dot(x, x.T) return np.sqrt(xx[:, None] xx - 2*xy)向量化版本通常能快几十甚至上百倍。我在处理大规模数据时这个技巧帮我节省了大量计算时间。
3分钟解锁Wand完整功能:终极免费增强方案 【免费下载链接】Wand-Enhancer Advanced UX and interoperability extension for Wand (WeMod) app 项目地址: https://gitcode.com/GitHub_Trending/we/Wand-Enhancer
还在为游戏修改器的功能限制而烦恼吗…
📅 2026/7/15 2:05:56
1. 百度慧眼数据:商业选址的"数字雷达"开店选址就像在迷雾中寻找灯塔,传统方法往往依赖人工踩点和经验判断,而百度慧眼提供的人口位置数据,相当于给决策者装上了高精度数字雷达。这套数据系统通过实时捕捉手机定位信号&…
📅 2026/7/15 2:05:55
1. 从蜂鸣器到Hi-Fi:FPGA音乐播放器的进化之路第一次用FPGA驱动蜂鸣器播放《小星星》时,那种成就感至今难忘——虽然音质像老式电话铃,但确实是自己亲手实现的音乐播放。后来接触到专业音频解码芯片WM8731,才发现FPGA在音频领域的…
📅 2026/7/15 2:05:55
1. 为什么我们需要AES-GCM?想象一下你正在给朋友寄一封机密信件。你不仅希望内容保密(加密),还要确保信件在运输过程中没被调包或篡改(认证)。这就是AES-GCM的核心价值——同时解决保密性、完整性和认证三大…
📅 2026/7/15 2:56:14
1. HTTP文件共享工具HFS与CHFS简介在日常生活和工作中,我们经常需要在不同设备间快速共享文件。传统的U盘拷贝、微信文件传输等方式要么效率低下,要么受限于文件大小。这时候,HFS(HTTP File Server)和CHFS(…
📅 2026/7/15 2:56:14
1. PCHMI控件基础入门第一次接触PCHMI时,我完全被它的简洁性震惊了。这个基于.NET框架的DLL文件,居然能替代传统组态软件完成90%的工业控制场景。与动辄几个G的商用组态软件不同,PCHMI.DLL只有几MB大小,却包含了完整的通信、界面和…
📅 2026/7/15 2:56:14
每到年底预算季,很多企业都会把「上一套HR系统」列入计划。但真正启动选型后,HR负责人往往会发现:市面上的HR软件SaaS产品看起来功能都差不多,价格从几万到上百万不等,试用时都说能解决问题,等真正用起来才…
📅 2026/7/15 2:56:14
1. 多源矢量数据整合实战在真实项目中,我们很少只处理单一格式的矢量数据。我遇到过同时需要处理SHP、PostGIS和GeoPackage三种数据源的项目,当时手动切换不同发布方式差点崩溃。下面分享几种常见数据源的发布技巧:Shapefile发布优化…
📅 2026/7/15 2:56:14
大模型微调方案并非简单罗列名词,而是涉及“改哪些参数”(全量微调/LoRA/QLoRA)与“学什么目标”(SFT/DPO)两个正交维度。微调应是“最后手段”,而非“第一选择”,需先尝试Prompt、Few-shot、RA…
📅 2026/7/15 2:55:14
1. COM线程模型基础与CoInitializeEx核心作用在Windows平台开发中,组件对象模型(COM)的线程处理机制一直是开发者必须掌握的底层知识。作为COM初始化的门户函数,CoInitializeEx不仅决定了对象在何种线程环境下运行,更影响着整个组件的并发性能…
📅 2026/7/15 0:00:17
1. 为什么M芯片Mac用户需要降级到Monterey? 去年刚拿到M2芯片的MacBook Pro时,我第一时间升级到了Ventura系统。结果第三天就遇到了微信闪退、Final Cut Pro渲染卡顿的问题。后来在开发者论坛发现,不少专业软件对Ventura的适配都存在问题。这…
📅 2026/7/15 0:00:17
1. 背景与核心概念在AI大模型快速发展的今天,许多开发者和研究者都面临一个现实问题:如何在有限的硬件预算下实现高效的本地大模型部署。特别是对于个人开发者和小型团队来说,购买最新的高端显卡成本高昂,而利用现有的或二手硬件资…
📅 2026/7/15 0:00:17
豆包openclaw最近圈子里都在聊豆包openclaw,我也没忍住,掏腰包入手了一套。说实话,刚拿到手的时候,心里是打鼓的。毕竟市面上类似的智能硬件太多了,有的吹得天花乱坠,用起来却是一堆bug。为了不让大家的钱打水漂,我连续用了半个月。从开箱到日常高频使用,甚至故意测试它…
📅 2026/7/14 6:35:02
SQLyog 13.3.1 社区版在Windows 10/11上的完整安装与连接指南 对于刚接触MySQL数据库管理的开发者和学生来说,选择一个直观易用的图形化管理工具至关重要。SQLyog作为一款轻量级但功能强大的MySQL GUI工具,能够显著提升数据库操作的效率和体验。本文将详…
📅 2026/7/14 12:06:52
SPEC CPU 2006 跨平台基准测试深度实战:ARM/X86/MIPS 架构配置优化与结果分析方法论在当今多元化的计算架构时代,如何客观评估不同处理器平台的真实性能成为系统工程师和性能优化专家的核心挑战。SPEC CPU 2006 作为业界公认的计算密集型基准测试套件&am…
📅 2026/7/14 7:15:18
目录
第一步:选对模板,省心一半
第二步:打开扫码点餐功能
开启功能按钮
桌台管理与桌码生成
第三步:个性化设计,打造品牌感
调整点餐页面
设置点餐规则 你还在让顾客站着排队点餐吗?2025年ÿ…
📅 2026/7/14 15:11:56
在业务中快速构建一个能理解私有文档、准确回答专业问题的智能助手,是很多开发团队面临的共同挑战。传统方案往往需要从零开始搭建复杂的 RAG(检索增强生成)系统,涉及文档解析、向量化、检索、大模型调用等多个环节,整…
📅 2026/7/15 2:24:18
FAE放射组学分析工具:医学影像特征探索的完整解决方案 【免费下载链接】FAE FeAture Explorer 项目地址: https://gitcode.com/gh_mirrors/fae/FAE
你是否曾经面对海量医学影像数据感到无从下手?想要从CT、MRI等影像中提取有价值的定量特征&#…
📅 2026/7/14 15:11:56