当前位置: 首页 > 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黄。在…...

页面渲染流程与性能优化

页面渲染流程与性能优化详解&#xff08;完整版&#xff09; 一、现代浏览器渲染流程&#xff08;详细说明&#xff09; 1. 构建DOM树 浏览器接收到HTML文档后&#xff0c;会逐步解析并构建DOM&#xff08;Document Object Model&#xff09;树。具体过程如下&#xff1a; (…...

第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词

Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵&#xff0c;其中每行&#xff0c;每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid&#xff0c;其中有多少个 3 3 的 “幻方” 子矩阵&am…...

蓝桥杯3498 01串的熵

问题描述 对于一个长度为 23333333的 01 串, 如果其信息熵为 11625907.5798&#xff0c; 且 0 出现次数比 1 少, 那么这个 01 串中 0 出现了多少次? #include<iostream> #include<cmath> using namespace std;int n 23333333;int main() {//枚举 0 出现的次数//因…...

html-<abbr> 缩写或首字母缩略词

定义与作用 <abbr> 标签用于表示缩写或首字母缩略词&#xff0c;它可以帮助用户更好地理解缩写的含义&#xff0c;尤其是对于那些不熟悉该缩写的用户。 title 属性的内容提供了缩写的详细说明。当用户将鼠标悬停在缩写上时&#xff0c;会显示一个提示框。 示例&#x…...

深度学习习题2

1.如果增加神经网络的宽度&#xff0c;精确度会增加到一个特定阈值后&#xff0c;便开始降低。造成这一现象的可能原因是什么&#xff1f; A、即使增加卷积核的数量&#xff0c;只有少部分的核会被用作预测 B、当卷积核数量增加时&#xff0c;神经网络的预测能力会降低 C、当卷…...

AGain DB和倍数增益的关系

我在设置一款索尼CMOS芯片时&#xff0c;Again增益0db变化为6DB&#xff0c;画面的变化只有2倍DN的增益&#xff0c;比如10变为20。 这与dB和线性增益的关系以及传感器处理流程有关。以下是具体原因分析&#xff1a; 1. dB与线性增益的换算关系 6dB对应的理论线性增益应为&…...

MySQL 索引底层结构揭秘:B-Tree 与 B+Tree 的区别与应用

文章目录 一、背景知识&#xff1a;什么是 B-Tree 和 BTree&#xff1f; B-Tree&#xff08;平衡多路查找树&#xff09; BTree&#xff08;B-Tree 的变种&#xff09; 二、结构对比&#xff1a;一张图看懂 三、为什么 MySQL InnoDB 选择 BTree&#xff1f; 1. 范围查询更快 2…...

elementUI点击浏览table所选行数据查看文档

项目场景&#xff1a; table按照要求特定的数据变成按钮可以点击 解决方案&#xff1a; <el-table-columnprop"mlname"label"名称"align"center"width"180"><template slot-scope"scope"><el-buttonv-if&qu…...

深入浅出Diffusion模型:从原理到实践的全方位教程

I. 引言&#xff1a;生成式AI的黎明 – Diffusion模型是什么&#xff1f; 近年来&#xff0c;生成式人工智能&#xff08;Generative AI&#xff09;领域取得了爆炸性的进展&#xff0c;模型能够根据简单的文本提示创作出逼真的图像、连贯的文本&#xff0c;乃至更多令人惊叹的…...

Linux部署私有文件管理系统MinIO

最近需要用到一个文件管理服务&#xff0c;但是又不想花钱&#xff0c;所以就想着自己搭建一个&#xff0c;刚好我们用的一个开源框架已经集成了MinIO&#xff0c;所以就选了这个 我这边对文件服务性能要求不是太高&#xff0c;单机版就可以 安装非常简单&#xff0c;几个命令就…...