julia 笔记:向量化 . 运算符(广播)

在Julia中,点运算符.

被用于表示按元素的操作,这样就可以在不使用循环的情况下轻松地对数组进行操作。

1 数组和元素

a=[1,2,3]
a
#3-element Vector{Int64}:
# 1
# 2
# 3

a+2
#=
'''
MethodError: no method matching +(::Vector{Int64}, ::Int64)
For element-wise addition, use broadcasting with dot syntax: array .+ scalar

Closest candidates are:
  +(::Any, ::Any, ::Any, ::Any...)
   @ Base operators.jl:578
  +(::T, ::T) where T<:Union{Int128, Int16, Int32, Int64, Int8, UInt128, UInt16, UInt32, UInt64, UInt8}
   @ Base int.jl:87
  +(::T, ::Integer) where T<:AbstractChar
   @ Base char.jl:237
  ...


Stacktrace:
 [1] top-level scope
   @ In[11]:1
'''
=#

直接加会报错,这时候需要使用.,让Julia广播标量BA的大小

a.+2
#=
'''
3-element Vector{Int64}:
 3
 4
 5
'''=#

2 两个不同形状的数组

使用.,Julia会将B广播到A的大小,然后进行按元素的加法

a=[1 2 3; 4 5 6]
a
#=
'''
2×3 Matrix{Int64}:
 1  2  3
 4  5  6
'''
=#

b=[1;2]
b
#=
'''
2-element Vector{Int64}:
 1
 2
'''=#

a.+b
#=
'''
2×3 Matrix{Int64}:
 2  3  4
 6  7  8
'''
=#

3 逐元素应用函数

f(x) = x^2 + 2*x + 1

A = [1, 2, 3]
G = f.(A)
'''
3-element Vector{Int64}:
  4
  9
 16
'''

4 不适用情况: .前面的是数字

1.+a
'''
syntax: invalid syntax "1.+"; add space(s) to clarify

Stacktrace:
 [1] top-level scope
   @ In[27]:1
'''

这也很好理解:1.+x 到底是表示 1. + x 还是 1 .+ x?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

UQI-LIUWJ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值