Le titre tel qu'il est.
Il s'agit d'un changement en place dans NumPy.
Python(NumPy)
>>> A = np.ones((3,3))
>>> A
array([[1., 1., 1.],
[1., 1., 1.],
[1., 1., 1.]])
>>> B = np.array([[1, 1, 1], [2, 2, 2]])
>>> B
array([[1, 1, 1],
[2, 2, 2]])
>>> np.add.at(A, [0, 2], B)
>>> A
array([[2., 2., 2.],
[1., 1., 1.],
[3., 3., 3.]])
Notez que l'opérateur . +
Est ajouté à l'opérateur + =
pour le faire . + =
, Et la diffusion est effectuée.
+ =
ne diffuse pas et ne constitue pas un changement sur place.
Cependant, . + =
(Bien sûr) diffuse, mais il s'agit d'un ** changement sur place ** [^ 1].
Julia
julia> A = ones(3,3)
3×3 Array{Float64,2}:
1.0 1.0 1.0
1.0 1.0 1.0
1.0 1.0 1.0
julia> B = [1. 1. 1.; 2. 2. 2.]
2×3 Array{Float64,2}:
1.0 1.0 1.0
2.0 2.0 2.0
julia> selectdim(A, 1, [1, 3]) .+= B
2×3 view(::Array{Float64,2}, [1, 3], :) with eltype Float64:
2.0 2.0 2.0
3.0 3.0 3.0
julia> A
3×3 Array{Float64,2}:
2.0 2.0 2.0
1.0 1.0 1.0
3.0 3.0 3.0
Sources numpy.ufunc.at — NumPy v1.19 Manual Arrays · The Julia Language Multi-dimensional Arrays · The Julia Language Mathematical Operations and Elementary Functions · The Julia Language
Recommended Posts