【Numpy】(3)数组操作

索引

基本索引

NumPy索引类似于Python列表的索引,但它提供了更多的功能。对于一维数组,你可以使用整数索引访问特定位置的元素:

import numpy as nparr = np.array([1, 2, 3, 4])
print(arr[2])  # 输出:3

对于多维数组,你可以使用逗号分隔的索引元组来访问元素:

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

切片索引

切片是Python和NumPy中一种常用的数据访问方式,允许你访问数组的一部分:

arr = np.array([0, 1, 2, 3, 4, 5])# 获取索引1到4之前的元素
print(arr[1:4])  # 输出:[1 2 3]# 获取从开始到索引3(不包含)的元素
print(arr[:3])  # 输出:[0 1 2]# 获取索引2到末尾的元素
print(arr[2:])  # 输出:[2 3 4 5]

对于多维数组,你可以对每个维度分别进行切片:

arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])# 获取第一行
print(arr[0, :])  # 输出:[1 2 3]# 获取第一列
print(arr[:, 0])  # 输出:[1 4 7]# 获取子数组(2x2,从arr[1:, 1:]开始)
print(arr[1:, 1:])  # 输出:
# [[5 6]
#  [8 9]]

布尔索引

布尔索引允许你根据布尔数组的值来索引目标数组,这在条件筛选数据时非常有用:

arr = np.array([0, 1, 2, 3, 4, 5])# 创建一个布尔数组
bool_arr = arr > 2# 使用布尔数组进行索引
print(arr[bool_arr])  # 输出:[3 4 5]# 直接使用布尔表达式
print(arr[arr > 2])  # 输出:[3 4 5]

花式索引

花式索引(Fancy indexing)允许你使用整数数组作为索引:

arr = np.array([0, 1, 2, 3, 4, 5])# 使用整数数组索引
print(arr[[1, 3, 4]])  # 输出:[1 3 4]

对于多维数组,花式索引可以让你访问数组的任意位置,甚至以非常灵活的方式重排数组:

arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])# 获取(0,1)、(1,2)和(2,0)位置的元素
print(arr[[0, 1, 2], [1, 2, 0]])  # 输出:[2 6 7]

注意事项

  • NumPy索引是从0开始的。
  • 切片是原数组的视图,修改切片会影响原数组。如果需要复制,可以使用.copy()方法。
  • 布尔索引和花式索引返回的数组不与原数组共享数据。

改变形状

numpy.reshape是NumPy库中的一个非常重要的函数,它允许你重新排列给定数组的维度,而不改变数组中的数据。这意味着你可以将任何形状的数组转换成你需要的任何其他形状,只要新形状的总元素数与原始数组相同。

reshape函数的基本语法如下:

numpy.reshape(a, newshape, order='C')
  • a:要被重塑的数组。
  • newshape:整数或整数元组,指定了新数组的形状。如果newshape是整数,则结果将是一维数组。特别地,newshape可以为-1,在这种情况下,值会自动计算以保持数组元素的总数不变。
  • order:{‘C’, ‘F’, ‘A’},可选。指定重塑操作和数组数据在内存中的读写顺序。'C’意味着C风格的顺序,'F’意味着Fortran风格的顺序,'A’意味着如果a是Fortran连续的,在重塑过程中也应该保持Fortran连续。

示例1:基础重塑

将一维数组重塑为二维数组:

import numpy as nparr = np.arange(6)
print("Original array:", arr)# 重塑为2x3数组
reshaped_arr = arr.reshape((2, 3))
print("Reshaped array:\n", reshaped_arr)

示例2:自动计算维度

使用-1自动计算维度,让NumPy自动确定正确的维度:

arr = np.arange(6)# 只指定行数,列数自动计算
reshaped_arr = arr.reshape((2, -1))
print("Reshaped array with -1:\n", reshaped_arr)

示例3:从多维到一维

将多维数组重塑为一维数组:

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

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

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

相关文章

C++:什么情况下函数应该声明为纯虚函数

在C中,函数应该在以下情况下声明为纯虚函数: 抽象基类:当你希望定义一个基类,该基类不能被实例化,只能作为其他类的基类时,你应该在基类中声明至少一个纯虚函数。这样的基类被称为抽象基类。纯虚函数通过在…

python实现多进程循环共享内存队列

python实现多进程循环共享内存队列 python >=3.8 1、原理流程 生产者消费者模式: 创建一个size大小的共享内存列表,前三个分别保存头指针、尾指针、锁 一个进程生产数据 多个进程消费数据 消费数据时通过锁来保证已消费的数据不能再被取出,已消费的数据置为None1、创建…

C到C++的敲门砖-1

文章目录 关键字命名空间输入和输出缺省参数函数重载 关键字 相较于C语言32个关键字: autodoubleintstructbreakelselongswitchcaseenumregistertypedefcharexternreturnunionconstfloatshortunsignedcontinueforsignedvoiddefaultgotosizeofvolatiledoifwhilesta…

全量知识系统“全基因序列”程序构想之1

序 这段时间使用AI工具来完善系统的设计。这几天的话题一直都是 使设计可能完成的一个起点,就是“全基因序列”。从这个文字表述上就可以看出,它将可能是需求文档、程序概要结构和数据库三部分的融合体。 计划从今天开始 深入这个话题,目标…

Everything:文件查找工具,一搜即得

名人说:东边日出西边雨,道是无晴却有晴。——刘禹锡 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 目录 一、软件介绍①Everything②核心功能③原理二、下载安装①下载②安装三、使用方法①文件搜索②高级搜索③快捷唤起四、总结

用python写网络爬虫:2.urllib库的基本用法

文章目录 urllib库抓取网页data参数timeout参数更灵活地配置参数登录代理Cookies 参考书籍 建议新入门的小伙伴先看我同一专栏的文章:用python写网络爬虫:1.基础知识 urllib库 urllib是python中一个最基础的HTTP库,一般是内置的,…

spotbugs不兼容IDEA2023.2

运行时出现报错,之后spotBugs就是灰色的了 spotbugs java.lang.LinkageError: loader constraint violation: when resolving method org.slf4j.ILoggerFactory org.slf4j.impl.StaticLoggerBinder.getLoggerFactory() the class loader com.intellij.ide.plugins.…

2024年 前端JavaScript Web APIs 第三天 笔记

3.1-表单全选反选案例 <!DOCTYPE html><html><head lang"en"><meta charset"UTF-8"><title></title><style>* {margin: 0;padding: 0;}table {border-collapse: collapse;border-spacing: 0;border: 1px solid …

网络安全实训Day5

写在前面 昨天忘更新了......讲的内容不多&#xff0c;就一个NAT。 之前记的NAT的内容&#xff1a;blog.csdn.net/Yisitelz/article/details/131840119 网络安全实训-网络工程 NAT 公网地址与私网地址 公网地址 可以在互联网上被寻址&#xff0c;由运营商统一分配全球唯一的I…

在 Windows 上利用Qwen大模型搭建一个 ChatGPT 式的问答小助手

本文首发于公众号&#xff1a;Hunter后端 原文链接&#xff1a;在 Windows 上利用Qwen大模型搭建一个 ChatGPT 式的问答小助手 最近 ChatGPT 式的聊天机器人比较火&#xff0c;可以提供各种问答功能&#xff0c;阿里最近推出了 Qwen1.5 系列的大模型&#xff0c;提供了各个参数…

在线BLOG网|基于springboot框架+ Mysql+Java+JSP技术的在线BLOG网设计与实现(可运行源码+数据库+设计文档)

推荐阅读100套最新项目 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 目录 前台功能效果图 管理员功能登录前台功能效果图 系统功能设计 数据库E-R图设计 lunwen参考 摘要 研究…

【C#算法实现】可见的山峰对数量

文章目录 前言一、题目要求二、算法设计及代码实现2.1 算法思想2.2 代码实现 前言 本文是【程序员代码面试指南&#xff08;第二版&#xff09;学习笔记】C#版算法实现系列之一&#xff0c;用C#实现了《程序员代码面试指南》&#xff08;第二版&#xff09;栈和队列中的可见的…

OpenCV-Java 开发简介

返回目录&#xff1a;OpenCV系列文章目录&#xff08;持续更新中......&#xff09; 上一篇&#xff1a; 如何在“Microsoft Visual Studio”中使用OpenCV编译应用程序 下一篇&#xff1a;暂无 ​ 警告&#xff1a; 本教程可能包含过时的信息。 从 OpenCV 2.4.4 开始&…

代码随想录Day48:买卖股票的最佳时机、买卖股票的最佳时机II

买卖股票的最佳时机 class Solution { public:/*dp[i][0]第i天持有股票所得的最大现金&#xff1b;dp[i][1]第i天不持有股票所得的最大现金&#xff1b;dp[i][0] max(dp[i-1][0], - prices[i]);dp[i][1] max(dp[i-1][1], dp[i-1][0] prices[i]);*/int maxProfit(vector<…

VB.NET高级面试题:什么是 VB.NET?与 Visual Basic 6.0 相比有哪些主要区别?

什么是 VB.NET&#xff1f;与 Visual Basic 6.0 相比有哪些主要区别&#xff1f; VB.NET是一种面向对象的编程语言&#xff0c;是微软公司推出的.NET平台上的一种编程语言&#xff0c;用于构建Windows应用程序、Web应用程序和Web服务等。它是Visual Basic的后续版本&#xff0…

面试算法-36-无重复字符的最长子串

题目 给定一个字符串 s &#xff0c;请你找出其中不含有重复字符的 最长 子串 的长度。 示例 1: 输入: s “abcabcbb” 输出: 3 解释: 因为无重复字符的最长子串是 “abc”&#xff0c;所以其长度为 3。 解 class Solution {public int lengthOfLongestSubstring(String …

java集合框架——Map集合概述

前言&#xff1a; 之前接触了单列合集&#xff0c;现在又接触了双列合集。整理下心得&#xff0c;打好基础&#xff0c;daydayup&#xff01;&#xff01; Map集合 Map集合称为双列集合&#xff0c;也被称为“键值对集合”。格式&#xff1a;{key1value1,key2value2...}&#…

【GPT-SOVITS-01】源码梳理

说明&#xff1a;该系列文章从本人知乎账号迁入&#xff0c;主要原因是知乎图片附件过于模糊。 知乎专栏地址&#xff1a; 语音生成专栏 系列文章地址&#xff1a; 【GPT-SOVITS-01】源码梳理 【GPT-SOVITS-02】GPT模块解析 【GPT-SOVITS-03】SOVITS 模块-生成模型解析 【G…

jwt以及加密完善博客系统

目录 一、背景 二、传统登陆功能&强制登陆功能 1、传统的实现方式 2、session存在的问题 三、jwt--令牌技术 1、实现过程 2、令牌内容 3、生成令牌 4、检验令牌 四、JWT登陆功能&强制登陆功能 1、JWT实现登陆功能 2、强制登陆功能 3、运行效果 五、加密/加…

论文阅读——SpectralGPT

SpectralGPT: Spectral Foundation Model SpectralGPT的通用RS基础模型&#xff0c;该模型专门用于使用新型3D生成预训练Transformer&#xff08;GPT&#xff09;处理光谱RS图像。 重建损失由两个部分组成&#xff1a;令牌到令牌和频谱到频谱 下游任务&#xff1a;