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

Julia数组详解

文章目录

    • 向量
    • 数列
    • 矩阵
    • 特殊数组
    • 数组函数

Julia系列:编程初步

向量

Julia中有两种向量,一种是类型统一的,另一种则可包含不同类型的变量,例如下面两个向量都是允许存在的

aNum = [1,2,3]  # 类型为 3-element Vector{Int64}
aAny = [1.0, 1, "one"]  # 类型为 3-element Vector{Any}

Julia通过方括号索引,下标从1开始

aNum[1]     # 1
aAny[3]  # "one"

由于向量中允许插入不同的数据类型,所以自然支持向量的嵌套

aMat = [[1,2], [3,4]]   # 类型为 2-element Vector{Vector{Int64}}

在科学计算中,最重要的自然是数值向量。在Julia中,对于维度以及嵌套类型相同的向量,就可以自由地进行计算。但需要注意,如果想对所有元素执行相同的函数操作,必须在运算符前或者函数后面添加一个.,比如

sin(aNum)       # ❌报错
sin.(aNum)      # 正确
aNum * aNum     # ❌报错,因为两个都是列向量,没法做矩阵乘法
aNum .* aNum    # 元素之间一对一的乘法
aNum + 1        # ❌报错,aNum和1的维度不同,无法相加
aNum .+ 1       # 得到[2, 3, 4]

数列

Julia中,通过a:b:c,可以生成从a到c生成间隔为b的等差数列,一般在循环时比较常用。例如

for i in 1:2:10print(i, " ")
end
# 1 3 5 7 9

这种数列可以参与到向量计算中,如果在计算时破坏了其等差数列的特征,那么将自动转换为向量,此外通过collect函数,也可以将数列转为向量

aRange = 1:2:5
sin.(aRange)   # 类型变为 3-element Vector{Float64}:
collect(aRange) # 类型变为向量

矩阵

尽管向量嵌套也可以起到矩阵的作用,但Julia为矩阵设计了一套专门的生成方案。

在矩阵中,行间元素用空格隔开,列间元素用分号隔开;而由逗号生成的向量,则默认为列向量。下面生成一个 1 × 3 1\times3 1×3的矩阵,其实就是行向量,则可与前面的列向量做矩阵乘法

m1 = [1 2 3]    # 1×3 Matrix{Int64}
m1 * aNum       # 返回值 14

数列的表达式也可以被应用在矩阵中

[1:5 1:5]   # 生成5行2列矩阵
[1:5; 1:5]  # 生成10行1列矩阵
[1:5, 1:5]  # 生成两个Range组成的向量

特殊数组

对于一列数据,Julia会称之为向量;如果有行有列,则会升级为矩阵;随着嵌套层级进一步增加,就会升级为数组。可以理解为,向量是一维数组,矩阵是二维数组。

Julia提供了一些函数,用以生成常用的数组,比较常用的有

  • zeros, ones, rand, randn

分别用于生成全零向量、全一向量、[0,1]区间的随机变量、服从标准正态分布的随机变量。这四个函数的输入参数均为数据类型T和各数组维度,T默认为浮点数,维度默认为1。

zeros(3,3,3)    # 返回值类型 3×3×3 Array{Float64, 3}
ones()          # 返回值 1

如果想定制矩阵中的值,可以用fill函数,其输入值分别是填充值和维度

julia> fill("Hi", 2,2)
2×2 Matrix{String}:"Hi"  "Hi""Hi"  "Hi"

对于布尔代数,特别提供了连个函数用于生成全真或者全假的函数,二者的输入参数均为维度

  • trures, falses

数组函数

Juli提供了一些基本的函数,用于检测数组的信息

k = 1

下表中,k均为可选参数,省略时将返回所有维度的情况。

函数返回值备注
eltype(aNum)Int64返回数据类型
length(aNum)3数组长度
ndims(aNum)1数组维度
size(aNum,k)3第k个维度的元素个数
axes(aNum,k)Base.OneTo(3)第k维有效索引
eachindex(aNum)Base.OneTo(3)一个访问 A 中每一个位置的高效迭代器
stride(aNum,k)1在第 k 维上的间隔

此外,更改数组维度也是必要需求,用函数reshape完成

reshape(aNum, 1, 3) # 返回1x3矩阵 1  2  3

通过fill!函数,可以更改数组中所有值

fill!(aNum, 0)  # aNum变成[0,0,0]

如果在函数结尾出现了感叹号,那么说明函数输入的参数可能会在调用后发生变化。fill!并不仅仅返回一个更改后的数组,同时也将aNum的值改变了。Julia的这个规范可以说非常贴心了。

相关文章:

Julia数组详解

文章目录 向量数列矩阵特殊数组数组函数 Julia系列:编程初步 向量 Julia中有两种向量,一种是类型统一的,另一种则可包含不同类型的变量,例如下面两个向量都是允许存在的 aNum [1,2,3] # 类型为 3-element Vector{Int64} aAny…...

用事务代码查看视图的函数

文章目录 1 Introduction2 Code 1 Introduction If we continue to see view with T-code. We can use the function for it . 2 Code REPORT z_websrv_con.CALL FUNCTION VIEW_MAINTENANCE_CALLEXPORTINGaction U "操作类型:U修改…...

LuatOS-SOC接口文档(air780E)--libcoap - coap数据处理

libcoap.new(code, uri, headers, payload) 创建一个coap数据包 参数 传入值类型 解释 int coap的code, 例如libcoap.GET/libcoap.POST/libcoap.PUT/libcoap.DELETE string 目标URI,必须填写, 不需要加上/开头 table 请求头,类似于http的headers,可选 string 请求体…...

js控制checkbox单选,获取checkbox的值,选中checkbox

声明&#xff1a;网上的资料杂七杂八的搞得我一个不熟悉前端的后端开发者弄起来贼难受&#xff0c;现在将实现了的做一个整合&#xff0c;希望能给你们带来点帮助&#xff08;主要还是帮助我自己(●ˇ∀ˇ●)&#xff0c;防止丢失&#xff09; html代码组件示例 <div styl…...

MYSQL(事务+锁+MVCC+SQL执行流程)理解(2)

一)MYSQL中的锁(知识补充) 可以通过In_use字段来进行判断是否针对于表进行加了锁 1)对于undo log日志来说:新增类型的&#xff0c;在事务提交之后就可以清除掉了&#xff0c;修改类型的&#xff0c;事务提交之后不能立即清除掉这些日志会用于mvcc只有当没有事务用到该版本信息时…...

ubuntu tools

1 cloc calculate lines of your code sudo apt-get install cloccloc ./file...

LeetCode 155. 掷骰子等于目标和的方法数:动态规划

【LetMeFly】1155.掷骰子等于目标和的方法数&#xff1a;动态规划 力扣题目链接&#xff1a;https://leetcode.cn/problems/number-of-dice-rolls-with-target-sum/ 这里有 n 个一样的骰子&#xff0c;每个骰子上都有 k 个面&#xff0c;分别标号为 1 到 k 。 给定三个整数 …...

PostgreSQL数据库从入门到精通系列之五:安装时序数据库TimescaleDB的详细步骤

PostgreSQL数据库从入门到精通系列之五:安装时序数据库TimescaleDB的详细步骤 一、下载PostgreSQL数据库yum源二、创建TimescaleDB存储库三、更新本地存储库列表四、安装TimescaleDB五、初始化PostgreSQL数据库六、启动Postgresql数据库服务七、以超级用户身份连接到PostgreSQ…...

软件测试(五)自动化 selenium

文章目录 自动化测试单元测试&#xff1a;单元测试&#xff1a;UI自动化 selenium工具定义特点&#xff1a;原理&#xff1a;seleniumjava环境搭建SeleniumAPI获取测试结果&#xff1a;添加等待浏览器操作键盘事件鼠标事件多层框架/窗口定位下拉框处理弹窗处理上传文件操作关闭…...

Android grantUriPermission的使用场景和方式

#grantUriPermission 作用 临时授权。 背景&#xff1a;FileProvider引入后应用之间想访问文件&#xff0c;都需要使用此接口。特别是两个独立的应用之间互通数据的时候。例如我们应用从图库获取文件的uri&#xff0c;显示在应用内的ImageView中。 #grantUriPermission 使用方…...

2023高频前端面试题-vue

1. 什么是 M V VM Model-View-ViewModel 模式 Model 层: 数据模型层 通过 Ajax、fetch 等 API 完成客户端和服务端业务模型的同步。 View 层: 视图层 作为视图模板存在&#xff0c;其实 View 就是⼀个动态模板。 ViewModel 层: 视图模型层 负责暴露数据给 View 层&…...

03初始Docker

一、初始Docker 1.什么是Docker 问题 ①大型项目组件复杂&#xff0c;运行环境复杂&#xff0c;部署时依赖复杂&#xff0c;出现兼容性问题。 ②开发&#xff0c;测试&#xff0c;生产环境有差异。不同的环境操作系统不同 解决 ①Docket将应用、依赖、函数库、配置一起打…...

1.1、Python基础-注释、变量声明及命名规则、数据类型

1.1、Python基础 Python基础1、注释2、变量3、数据类型 Python基础 1、注释 注释是给程序员看的&#xff0c;为了让程序员方便阅读代码&#xff0c;解释器会忽略注释。使用自己熟悉的语言&#xff0c;适当的对代 码进行注释说明是一种良好的编码习惯。 注释写法 #我是单行注…...

Python第三方库安装——使用vscode、pycharm安装Python第三方库

[TOC](Python第三方库安装——使用vscode、pycharm安装Python第三方库) # 前言 在这里介绍vscode、Pycharm安装python第三方库的方法。 操作系统&#xff1a;windows10 专业版 环境如下&#xff1a; Pycharm Comunity 2022.3 Visual Studio Code 2019 Python 3.8 pip&#xff…...

【vue】组件通选方式

父子传值 props $emit 这是最基本的父子组件通讯方式。通过 props 属性将数据从父组件传递给子组件&#xff0c;而子组件通过触发事件&#xff08;$emit&#xff09;将数据发送回父组件。 $children $parent 通过 $parent 属性可以访问父组件的实例&#xff0c;通过 $child…...

java 使用策略模式减少if

使用多态&#xff1a;通过使用面向对象的多态特性&#xff0c;可以将不同的逻辑封装到不同的类中&#xff0c;避免大量的 if 语句。使用继承和接口来定义通用的方法&#xff0c;并让具体的实现类实现这些方法。 使用设计模式&#xff1a;使用设计模式可以更好地组织和管理代码逻…...

第1章 引论

前言 这一章&#xff0c;阐述本书的目的&#xff0c;并简要复习离散数学以及程序设计的一些概念&#xff1a; 看到程序在较大输入情况下的运行性能与在适量输入情况下的运行性能具有同等重要性总结本书其余部分所需要的数学基础简要复习递归 1.1 本书讨论的内容 在许多问题当中…...

深入探究Linux文件:.sh、.swp文件的作用与意义 (linux .sh.swp)

近年来&#xff0c;Linux操作系统已经成为了许多服务器、云计算平台、嵌入式设备等领域的首选。Linux操作系统囊括了大量的命令和文件&#xff0c;而其中 .sh 和 .swp 文件是许多 Linux 用户较为熟悉的两种文件类型。那么&#xff0c;这两种文件的作用和意义是什么呢&#xff1…...

优雅的使用String字符串处理各种类型转换

文章目录 &#x1f31f; 优雅的使用String字符串处理各种类型转换&#x1f34a; 基本类型转字符串&#x1f34a; 字符串转基本类型&#x1f34a; 字符串与字符数组的转换&#x1f34a; 字符串与字节数组的转换&#x1f34a; 其他类型转字符串&#x1f34a; 总结 &#x1f4d5;我…...

Harmony 个人中心(页面交互、跳转、导航、容器组件)

个人中心 前言正文一、创建工程二、登录① 更换启动页面② 拓展修饰符③ 页面跳转④ 等待进度条 三、导航栏四、首页① 轮播图② 网格列表 五、我的① 带参数跳转 六、源码 前言 今天是1024&#xff0c;祝各位程序员们&#xff0c;钱多事少离家近&#xff0c;不秃也强bug黄。在…...

SiameseUIE模型Git使用进阶:团队协作开发指南

SiameseUIE模型Git使用进阶&#xff1a;团队协作开发指南 1. 开篇&#xff1a;为什么团队开发需要Git规范 咱们做AI项目开发时&#xff0c;经常遇到这样的场景&#xff1a;几个人同时修改代码&#xff0c;结果合并时冲突不断&#xff1b;或者某位同事的代码把整个项目搞崩了&…...

高效安装BetterNCM:零基础用户的插件管理指南

高效安装BetterNCM&#xff1a;零基础用户的插件管理指南 【免费下载链接】BetterNCM-Installer 一键安装 Better 系软件 项目地址: https://gitcode.com/gh_mirrors/be/BetterNCM-Installer 你是否曾因网易云音乐插件安装步骤繁琐而放弃个性化体验&#xff1f;BetterNC…...

FireRedASR Pro长音频处理优化方案:基于LSTM的流式识别

FireRedASR Pro长音频处理优化方案&#xff1a;基于LSTM的流式识别 你有没有遇到过这样的场景&#xff1f;一场长达两小时的会议录音&#xff0c;或者一堂干货满满的讲座&#xff0c;想要把它转成文字&#xff0c;结果发现要么是软件直接卡死&#xff0c;要么就是识别出来的文…...

OpenClaw性能测试:Qwen3.5-9B在不同硬件下的响应速度对比

OpenClaw性能测试&#xff1a;Qwen3.5-9B在不同硬件下的响应速度对比 1. 测试背景与动机 上周在部署OpenClaw自动化工作流时&#xff0c;我发现同样的任务在不同设备上执行速度差异巨大。这让我意识到硬件配置对AI智能体性能的影响可能被严重低估。于是决定用Qwen3.5-9B这个热…...

如何彻底清理显卡驱动残留?DDU终极解决方案完整指南

如何彻底清理显卡驱动残留&#xff1f;DDU终极解决方案完整指南 【免费下载链接】display-drivers-uninstaller Display Driver Uninstaller (DDU) a driver removal utility / cleaner utility 项目地址: https://gitcode.com/gh_mirrors/di/display-drivers-uninstaller …...

Z-Image-Turbo_Sugar脸部Lora生成图像的后处理技巧:使用PS软件进行精修

Z-Image-Turbo_Sugar脸部Lora生成图像的后处理技巧&#xff1a;使用PS软件进行精修 AI生成图像&#xff0c;尤其是像Z-Image-Turbo_Sugar这类擅长生成甜美、精致人像的模型&#xff0c;已经能产出相当惊艳的初稿。但如果你仔细观察&#xff0c;会发现这些图片距离真正“完美”…...

3分钟快速破解:百度网盘提取码智能获取工具终极指南

3分钟快速破解&#xff1a;百度网盘提取码智能获取工具终极指南 【免费下载链接】baidupankey 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 还在为百度网盘分享链接的提取码而烦恼吗&#xff1f;每次遇到加密资源都要手动搜索&#xff0c;既耗时又低效。…...

5大核心模块全面释放NVIDIA显卡潜能:从新手到专家的调校指南

5大核心模块全面释放NVIDIA显卡潜能&#xff1a;从新手到专家的调校指南 【免费下载链接】nvidiaProfileInspector 项目地址: https://gitcode.com/gh_mirrors/nv/nvidiaProfileInspector 你是否曾疑惑为什么同款显卡在不同游戏中的表现差异显著&#xff1f;为什么专业…...

如何改cad文件版本?盘点三个实用方法

在日常 CAD 绘图工作中&#xff0c;经常会遇到高版本 CAD 文件在低版本软件中无法打开、显示异常的问题。本文为大家整理了3 种实用的 CAD 版本转换方法&#xff0c;包含工具批量转换与两种代码实现方式&#xff0c;满足不同场景下的版本转换需求。方法一&#xff1a;汇帮 CAD …...

【无标题】作业

案例1&#xff1a;软件233班学生信息数据分析与可视化一、数据预处理首先读取Excel文件&#xff0c;处理缺失值。原始数据中存在大量空值&#xff08;生源省份、城市、生日、寝室号、成绩等&#xff09;&#xff0c;需进行清洗&#xff1a; 性别&#xff1a;仅“男”“女”&…...