numpy的基本操作

1.常用方法创建array

print(np.array([1, 2, 3], dtype="f4"))# 32位浮点型

print(np.array([1.5, 2.2, 3]))# 默认浮点型

print(np.array([1, 2, 3, 4, 5], ndmin=3))# 3维数组

print(np.array([range(i, i + 5) for i in [1, 2, 3]]))#

print(np.zeros(shape=[5, 5], dtype="i4"))# 5x5的0数组

print(np.ones(shape=[5, 5], dtype="i4"))# 5x5的1数组

print(np.array(["1.1", "2.2", "3.3"], dtype="S").astype("f4"))# 字符串数组转为浮点型数组

# 所有非零元素的索引
a=np.nonzero(np.array([1, 0, 2, 3, 0, 4]))#
print(a)#(array([0, 2, 3, 5], dtype=int64),)
print(a[0])# [0 2 3 5]

print(np.full(shape=[5, 5], fill_value=1.5, dtype=np.float_))# 5x5的1.5数组


print(np.eye(10))# 10x10的单位阵


# 数组元素为随机值,因为它们未初始化


print(np.empty(shape=(5, 5)))# 5x5的未初始化数组


print(np.linspace(1, 10, 5))# 返回num个等间距的样本

 

 


 

print(np.random.random((5, 5)))# 随机生成5行5列

# 生成[0, 10) 且 3行3列的随机数
# 生成的数据包括起始值和结束值,但不包括结束值本身。
print(np.random.randint(0, 10, (3, 3)))# 3x3的随机整数数组, 值在[0, 10)

print(np.random.normal(0, 1, (3, 3)))# 3x3的正态分布随机数, 均值为0, 方差为1

print(np.array([1, 2, 3]).itemsize)# 元素字节大小, 32位=4字节

2. Numpy 索引和切片 

在Python中,切片(slice)是对序列型对象(如list, string, tuple)的一种高级索引方法。
普通索引只取出序列中一个下标对应的元素,而切片取出序列中一个范围对应的元素

2.1普通索引

一维的索引
a1 = np.array([1, 2, 3, 4])
print(a1)
print(a1[0])
print(a1[2])

二维的索引
a2 = np.array([
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
])
print(a2[2])
print(a2[2, 1])
print(a2[:, 2])# 第2列元素,行索引省略表示所有行


a3 = np.array([
    [[10, 11, 12], [13, 14, 15], [16, 17, 18]],
    [[20, 21, 22], [23, 24, 25], [26, 27, 28]],
    [[30, 31, 32], [33, 34, 35], [36, 37, 38]]
])

# 打印数组 a3 的形状
print(a3.shape)  

# 打印 a3 的第三层(索引为 2)
print(a3[2])  

# 打印 a3 第三层的第一层(索引为 2,0)
print(a3[2, 0])  

# 打印 a3 第三层第一层的第二个元素(索引为 2,0,1)
print(a3[2, 0, 1])  

# 打印 a3 所有层的第二层的第三个元素(索引为 :,1,2)
print(a3[:, 1, 2])  

# 打印 a3 第二层的第三层(索引为 1,2)
print(a3[1, 2])  

# 打印 a3 第一层的所有元素(索引为 0,:)
print(a3[0, :])  

# 打印 a3 第一层的所有第二层元素(索引为 0,:,1)
print(a3[0, :, 1])  

# 打印 a3 所有层的第二层(索引为 :,1)
print(a3[:, 1])  

# 打印 a3 所有层的第二层的第一个元素(索引为 :,1,0)
print(a3[:, 1, 0])  

# 打印 a3 所有层的第二层和第三层的第一个元素(索引为 :,1:3,0)
print(a3[:, 1:3, 0])  

# 打印 a3 所有层的前两层的前两层(索引为 :,:2,:2)
print(a3[:, :2, :2])  

# 打印 a3 第二层的第二层和第三层的第二个元素(索引为 1:2,1:3,1)
print(a3[1:2, 1:3, 1])  

print(a3[:, 0, 1])  # 打印所有层的第一层的第二个元素

print(a3[:, ::2, 1])  # 打印所有层的隔一个元素的层的第二层元素

print(a3[:, [0, 2], [0, 1]])  # 以特定索引组合打印元素

2.2索引可以是array数组

data = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9])
mask1 = np.array([True, False, True, False, True, False, True, False, True],dtype=np.bool_)
index = np.array([1, 0, 1, 0, 1, 0, 1, 0, 1], dtype="i1")
print(data[mask1])# 索引为True的元素

# index表示索引 将data对应的索引选择出来
print(data[index])# 索引为1,0,1,0的元素

data = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9])
index = np.array([2, 4, 1, 0], dtype="i1")
print(data[index])# 索引为2,4,1,0的元素

2.3高级索引
 

arr = np.array([
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]])
# 使用整数数组索引选择元素
indices = np.array([0, 2])
result = arr[:, indices]# 选择第0列和第2列,即第0行和第2行
#result = arr[:, [0, 2]]#与上一行等价
print(result)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如何部署 Celestia 节点:运行轻节点和全节点

最近几周,Celestia ($TIA) 凭借其模块化数据可用性的基本概念和突破性功能在加密社区引起了轰动。参与网络的方式多种多样,例如将 TIA 与验证器进行质押或在网络上构建应用程序。 用户还可以通过部署节点与区块链进行交互。本指南将解释如何设置和运行 C…

ollama 多模态llava图像识别理解模型使用

参考: https://llava-vl.github.io/ https://ollama.com/blog/vision-models https://blog.csdn.net/weixin_42357472/article/details/137666022 下载: ollama run llava:13bcli使用 图片地址前面空格就行 describe this image: /ai/a1.jpg

<Rust><iced>基于rust使用iced库构建GUI实例:图片的格式转换程序

前言 本专栏是Rust实例应用。 环境配置 平台:windows 软件:vscode 语言:rust 库:iced、iced_aw 概述 本文是专栏第二篇实例,是一个图像格式转换程序,基于rust图像处理库image以及文件处理库rfd。 UI演示&…

分数计算 初级题目

今天继续更题。今天的题目是《第五单元 分数的加减法》初级题目。 定位:题目较为初级,适合预习 参考答案:CACCADACAABACBBCDBCB

day54 动态规划 part10 300.最长递增子序列 674. 最长连续递增序列 718. 最长重复子数组

300.最长递增子序列 动规五部曲 1.dp[i]的定义 dp[i]表示i之前包括i的以nums[i]结尾的最长递增子序列的长度 2.状态转移方程 位置i的最长升序子序列等于j从0到i-1各个位置的最长升序子序列 1 的最大值。 所以:if (nums[i] > nums[j]) dp[i] max(dp[i], dp…

C++ 50 之 继承中的对象模型

继承中的对象模型 在C编译器的内部可以理解为结构体&#xff0c;子类是由父类成员叠加子类新成员而成&#xff1a; #include <iostream> #include <string> using namespace std;class Base03{ public:int m_a; protected:int m_b; private:int m_c; // 哪怕是…

【机器学习】Dify:AI智能体开发平台版本升级

一、引言 关于dify&#xff0c;之前力推过&#xff0c;大家可以跳转 AI智能体研发之路-工程篇&#xff08;二&#xff09;&#xff1a;Dify智能体开发平台一键部署了解&#xff0c;今天主要以dify为例&#xff0c;分享一下如何进行版本升级。 二、版本升级 2.1 原方案 #首次…

《2023-2024中国数据资产发展研究报告》

中国电子信息产业发展研究院发布《2023-2024中国数据资产发展研究报告》&#xff08;下称《报告》&#xff09;&#xff0c;紧跟国家战略部署&#xff0c;调研国内数据资产发展现状&#xff0c;掌握数据价值实现路径&#xff0c;助力释放数字经济新动能。 《报告》从数据资产相…

dotnet new 命令详解

一、简介 dotnet new 命令用于基于指定的模板创建新项目、配置文件、解决方案。 二、常用选项 -o, --output <output>&#xff1a;指定创建项目后放置的目录名 示例&#xff1a; dotnet new console -o MyConsoleApp-n, --name <name>&#xff1a;指定项目的名…

操作系统复习-线程同步

互斥量 两个线程的指令交叉执行互斥量可以保证先后执行称为原子性 原子性是指一系列操作不可被中断的特性这一系列操作要么全部执行完成&#xff0c;要么全部没有执行不存在部分执行部分未执行的情况 互斥锁 互斥量是最简单的线程同步的方法互斥锁&#xff0c;处于两态之一的…

上位机能不能替代PLC实现控制?为什么一定要学上位机?

上位机是一个广泛用于自动化控制系统的术语&#xff0c;它通常指的是在自动化控制系统中&#xff0c;用于监控和控制下位机&#xff08;通常是嵌入式系统或者是PLC等&#xff09;的计算机系统。上位机可以通过各种通信协议&#xff08;如RS232、RS485、以太网等&#xff09;与下…

GitLab教程(四):分支(branch)和合并(merge)

文章目录 1.分支&#xff08;branch&#xff09;&#xff08;1&#xff09;分支的概念&#xff08;2&#xff09;branch命令 2.合并&#xff08;merge&#xff09;&#xff08;1&#xff09;三个命令pullfetchmergegit fetchgit mergegit pull &#xff08;2&#xff09;合并冲…

SVN 报错Error: Unable to connect to a repository at URL解决方法

1. 报错背景&#xff1a; 使用ssh 用svn拉取仓库代码时&#xff0c;出现如下报错&#xff1a; Can’t create session: Unable to connect to a repository at URL svn://127.0.0.1 …. Can’t connect to host ‘127.0.0.1’: Connection refused at C:/Program Files/Git/mi…

南师大GIS专业2024排名NO.1!!!

南师大GIS 666 学科专业实力666&#xff0c;研究方向多多多&#xff01; 有学术方向有开发应用方向&#xff0c; 有GIS&#xff08;建模、数字地形、基础理论和三维GIS等&#xff09;、 有Cartography &#xff08;叙事地图、动态地图、地图风格迁移等&#…

自养号测评全揭秘:沃尔玛卖家如何实现销量稳步增长

在沃尔玛这片激烈的商业战场上&#xff0c;我作为一位销售者&#xff0c;深知在这个竞争激烈的市场中&#xff0c;测评对于提升产品排名、权重以及销量的关键作用。随着测评需求的不断增长&#xff0c;我们意识到&#xff0c;寻找可靠的测评服务不再是简单的选择&#xff0c;而…

【刷力扣】23. 合并 K 个升序链表(dummy节点技巧 + 分治思维 + 优先队列)

目录 一、合并升序链表问题二、题目&#xff1a;[21. 合并两个有序链表](https://leetcode.cn/problems/merge-two-sorted-lists/description/)1、掌握dummy节点的技巧 三、题目&#xff1a;[23. 合并 K 个升序链表](https://leetcode.cn/problems/merge-k-sorted-lists/descri…

Linux DMA-Buf驱动框架

一、DMABUF 框架 dmabuf 是一个驱动间共享buf 的机制&#xff0c;他的简单使用场景如下&#xff1a; 用户从DRM&#xff08;显示驱动&#xff09;申请一个dmabuf&#xff0c;把dmabuf 设置给GPU驱动&#xff0c;并启动GPU将数据输出到dmabuf&#xff0c;GPU输出完成后&#xf…

Vscode flake8插件 python代码语法格式检测/代码过长等误报设置

在vscode中python格式检测使用flake8插件很方便&#xff0c;但是经常会报出一些不必要错误&#xff0c;影响开发效率&#xff0c;忽略这些错误可以帮助减少对于特定项目可能不太关键的PEP 8警告或代码风格问题的干扰&#xff0c;特别是在项目有自己的格式化和编码标准时。使用f…

一款经典BUCK DCDC降压芯片TPS5430适合24V转5V转12V及其电路图

前言&#xff1a; TPS5430封装和丝印 经典老款DCDC&#xff0c;适合24V转5V、24V转12V及其它24V转其它电压降压使用&#xff0c;对于输入电压较低&#xff0c;如输入12V电压的&#xff0c;不推荐使用该芯片&#xff0c;该芯片出现时间较长&#xff0c;且非同步整流芯片&#xf…