julia常用矩阵函数_Julia 多维数组

本文详细介绍了Julia中的多维数组,包括数组的基础函数、构造和初始化方法,以及向量化的运算符和函数。重点讨论了索引、赋值、广播操作和稀疏矩阵等内容,展示了如何在Julia中高效地操作和处理数组数据。
摘要由CSDN通过智能技术生成

多维数组

数组是一个存在多维网格中的对象集合。通常,数组包含的对象的类型为 Any 。对大多数计算而言,数组对象一般更具体为 Float64 或 Int32 。

因为性能的原因,Julia 不希望把程序写成向量化的形式。

在 Julia 中,通过引用将参数传递给函数。Julia 的库函数不会修改传递给它的输入。用户写代码时,如果要想做类似的功能,要注意先把输入复制一份儿。

数组

基础函数

函数

说明

eltype(A)

A 中元素的类型

length(A)

A 中元素的个数

ndims(A)

A 有几个维度

nnz(A)

A 中非零元素的个数

size(A)

返回一个元素为 A 的维度的多元组

size(A,n)

A 在某个维度上的长度

stride(A,k)

在维度 k 上,邻接元素(在内存中)的线性索引距离

strides(A)

返回多元组,其元素为在每个维度上,邻接元素(在内存中)的线性索引距离

构造和初始化

下列函数中调用的 dims... 参数,既可以是维度的单多元组,也可以是维度作为可变参数时的一组值。

函数

说明

Array(type, dims...)

未初始化的稠密数组

cell(dims...)

未初始化的元胞数组(异构数组)

zeros(type, dims...) |指定类型的全 0 数组. 如果未指明 type, 默认为 Float64

zeros(A) |全 0 数组, 元素类型和大小同 A.

ones(type, dims...) |指定类型的全 1 数组. 如果未指明 type, 默认为 Float64

ones(A) |全 1 数组, 元素类型和大小同 A.

trues(dims...) | 全 true 的 Bool 数组

falses(dims...) | 全 false 的 Bool 数组

reshape(A, dims...)

将数组中的数据按照指定维度排列

copy(A) | 复制 A

deepcopy(A) | 复制 A ,并递归复制其元素

similar(A, element_type, dims...)

属性与输入数组(稠密、稀疏等)相同的未初始化数组,但指明了元素类型和维度。

第二、三参数可省略,省略时默认为 A 的元素类型和维度

reinterpret(type, A)

二进制数据与输入数组相同的数组,但指明了元素类型

rand(dims) | 在 [0,1) 上独立均匀同分布的 Float64 类型的随机数组

randn(dims) | Float64 类型的独立正态同分布的随机数组,均值为 0 ,标准差为 1

eye(n) | n x n 单位矩阵

eye(m, n) | m x n 单位矩阵

linspace(start, stop, n)| 从 start 至 stop 的由 n 个元素构成的线性向量

fill!(A, x) | 用值 x 填充数组 A

fill(x, dims) | 创建指定规模的数组, 并使用 x 填充

连接

使用下列函数,可在任意维度连接数组:

函数

描述

cat(k, A...) | 在 k 维度上连接输入 n-d 数组

vcat(A...) | cat(1, A...) 的简写

hcat(A...) |cat(2, A...) 的简写

传递给这些函数的标量值被视为一元阵列。

级联功能非常常用,所以为它们设计了特殊的语法:

表示

调用

[A B C ...] |hcat

[A, B, C, ...] |vcat

[A B; C D; ...] |hvcat

hvcat 可以实现一维上的(使用分号间隔)或二维上的(使用空格间隔)的级联。

Comprehensions

Comprehensions 用于构造数组。它的语法类似于数学中的集合标记法:

A = [ F(x,y,...) for x=rx, y=ry, ... ]

F(x,y,...) 根据变量 x, y 等来求值。这些变量的值可以是任何迭代对象,但大多数情况下,都使用类似于 1:n 或 2:(n-1) 的范围对象,或显式指明为类似 [1.2, 3.4, 5.7] 的数组。它的结果是 N 维稠密数组。

下例计算在维度 1 上,当前元素及左右邻居元素的加权平均数:

julia> const x = rand(8)

8-element Array{Float64,1}:

0.843025

0.869052

0.365105

0.699456

0.977653

0.994953

0.41084

0.809411

julia> [ 0.25*x[i-1] + 0.5*x[i] + 0.25*x[i

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值