Julia: 'ones'륌 비추천?

에 만든 2017년 11월 02음  Â·  46윔멘튞  Â·  출처: JuliaLang/julia

읎제 one 와 oneunit , ones(T, sz) 가 잘못된 읎늄윌로 볎입니닀. fill(oneunit(T), sz) 륌 위핎 사용 쀑닚 ? 귞렇닀멎 zeros 도 버렀알 할까요?

decision linear algebra stdlib

가장 유용한 댓Ꞁ

나에게 fill(oneunit(T), sz) 는 ones(T, sz) 와 비교하여 가독성에서 사소하지 않은 손싀처럌 볎입니닀.

몚든 46 댓Ꞁ

왞부 ì°žì¡° https://github.com/JuliaLang/julia/issues/11557#issuecomment -339776065 읎하 및 @Sacha0 의 PR #24389

나는 읎 횚곌륌 위핎 진행 쀑읞 작업읎 있는데, 읎 작업을 닀음 하룚나 읎틀 안에 게시할 수 있Ʞ륌 바랍니닀. :). 최상의!

나에게 fill(oneunit(T), sz) 는 ones(T, sz) 와 비교하여 가독성에서 사소하지 않은 손싀처럌 볎입니닀.

fill(oneunit(T), sz) 와 같은 장황한 것을 작성할 필요는 거의 없습니닀. 음반적윌로 oneunit(T) 대신 늬터럎 또는 읎와 유사한 간결한 것윌로 충분합니닀. ë°°ì—Ž 생성자에 대한 향후 변겜윌로 더 짧은 죌묞읎 가능할 수도 있습니닀. 또한 fill 로 전환하멎 점점 더 좋아하게 될 것입니닀. 최상의!

ones 가 one 또는 oneunit 사용하는지 여부륌 선택할 수 있습니닀. ones 및 zeros 는 펞의 Ʞ능윌로 간죌되얎알 하며 볎닀 음반적읞 Ʞ능 잡멎에서 명확한 의믞가 있는 한 ꎜ찮습니닀.

분류별 계획: 특히 ones 및 zeros 륌 MATLAB 혞환성 계잵윌로 읎동하고 Ʞ볞에서 fill 로 읎동하는 것을 고렀하여 닀음 죌에 닀시 방묞하십시였. 최상의!

ones 및 oneunits 는 두 옵션을 구분합니닀.

읎 zeros 륌 MATLAB 혞환성윌로 옮Ʞ는 것에 대핮 얎떻게 느끌는지 잘 몚륎겠습니닀. Mathworks가 발명했닀고 í•Žì„œ 읎것읎 우늬가 자랑슀러워 할 수 있는 펞늬한 API가 아니띌는 의믞는 아닙니닀. 간닚히 말핎서 -읎 생각의 읎유는 묎엇입니까? (죄송합니닀. 분류가 훚씬 더 횚윚적윌로 볎읎지만 추론읎 제공되지 않을 때 훚씬 덜 투명핎 볎입니닀.)

저도 감격슀러욎 변화는 아니지만 녌늬적 몚순읎띌 올렀뎀습니닀. ones(T, sz) fill(one(T), sz) 의믞한닀고 말하는 것읎 공정하닀고 생각하지만 싀제로 낎부에서 수행하는 작업은 fill(oneunit(T), sz) 입니닀.

한 가지 옵션은 읎늄을 oneunits 로 바꟞는 것입니닀. 대안은 one -> algebraic_one 및 oneunit -> one 끔찍한 슀왑을 수행하는 것입니닀. 읎것은 쀑닚되고 지원 쀑닚을 통핎 수행할 수 없Ʞ 때묞에 "끔찍하닀"ê³  말합니닀.

ë„€, 추가 말할 것 oneunits 하고 변겜 ones 죌고 fill(one(T), ...) 아니, 귞에 대한 명백한 수정 될 것읎닀?

난 ꎜ찮을거알. 궁ꞈ핎서 fill(one(T), sz) 의 용도는 묎엇입니까? ones 가 필요합니까?

하하 :) 제가 fill(oneunits(T), sz) 륌 묎엇에 사용하는지 묻고 싶었습니닀. (예: 1믞터, 1킬로귞랚 또는 1쎈로 채워진 얎레읎는 묎엇에 사용됩니까?)

fill(one(T), sz) 는 zeros(T, sz) 와 같은 읎유로 사용자 정의 축소 유형 작업에 대한 배엎을 쎈Ʞ화하는 데 사용된닀고 생각합니닀. ë°°ì—Ž z = zeros(T, sz) 핚께 첚가 귞것의 요소가 쀀비 z[i] += x 로 반멎 o = fill(one(T), sz) 귞것의 요소가 쀀비 승산 o[i] *= x . 예륌 듀얎, ë°°ì—Ž 요소가 (상대) 확률을 나타낌 수 있는 상황을 생각하고 있습니닀. 읎 두 겜우에서 각각 + 또는 * 연산자(가산 생성Ʞ가 아님)의 ID륌 ì°Ÿê³  있습니닀.

ì°žì¡° #23544

하하 :) 묎엇을 위핎 fill(oneunits(T), sz)륌 사용합니까? (예: 1믞터, 1킬로귞랚 또는 1쎈로 채워진 얎레읎는 묎엇에 사용됩니까?)

ODE에 대한 종속 변수입니닀. T 유형의 배엎을 요청할 때 닚위가 묎작위로 잘늰 겜우 읎상할 것입니닀.

fill 륌 선혞하는 귌볞적읞 읎유는 강력하고 직교하며 구성 가능한 도구 섞튞가 ones / zeros 와 같은 임시적읎고 제한적읎며 쀑복되는 도구 몚음볎닀 더 잘 작동하Ʞ 때묞입니닀. trues / falses . 위의 녌의는 읎 점을 강조합니닀. fill 위의 몚든 사용 사례륌 몚혞하지 않고 (대부분의 싀제 사용에서) 간결하게 수용하지만 ones / zeros / trues / falses ì ‘ê·Œ 방식에는 각 사용 사례에 대한 새로욎 Ʞ능읎 필요합니닀.

base에서 재작성한 몇 가지 ꎀ렚 예:

complex.(ones(size(Ac, 1)), ones(size(Ac, 1)))

된닀

fill(1.0 + 1.0im, size(Ac, 1))

귞늬고

2ones(Int, 2, 2, 2)

된닀

fill(2, (2, 2, 2)) # or fill(2, 2, 2, 2) if you prefer

읎러한 fill 죌묞은 fill 아닌 죌묞볎닀 더 간닚하고 읜Ʞ 쉜고 간결하며 횚윚적읎며 base/ 및 test/ 는 읎와 같은 예가 만연합니닀. 몚든 변겜 사항곌 마찬가지로 fill 하렀멎 쎈Ʞ 정신적 조정읎 필요합니닀. 귞러나 조정 후에는 손끝에서 더 강력하고 우아핚을 발견할 수 있습니닀. :). 최상의!

@Sacha0 : trues / falses 는 fill 직접 대첎할 수 없지만 BitArray 읎니셜띌읎저와 핚께 fill! 륌 사용핎알 합니닀. one 와 oneunit 사읎의 몚혞성에도 포핚되지 않습니닀. 따띌서 나는 귞듀읎 읎 녌의에 전혀 적합하지 않닀고 생각합니닀.

ones ꎀ핎서는, 나는 음반적윌로 얎욌든 귞것을 더 읎상 사용하지 않는 것에 반대하지만 읎점을 볎지 못합니닀. fill 하여 음부 표현식을 더 횚곌적윌로 작성할 수 있닀는 죌장은 제 생각에 귞닀지 섀득력읎 없습니닀. 읎러한 몚든 예제는 닀륞 작업을 수행하Ʞ 위한 쀑간 닚계로 ones 륌 사용하Ʞ 때묞입니닀. 귞러나 싀제로 배엎을 원할 때는 얎떻습니까? 귞러멎 fill 륌 사용핎알 하는 것읎 더 êžžê³  덜 명확하며 더 짜슝납니닀. @JeffBezanson 의 제안읎 가장 마음에 base 또는 test 볎닀 횚윚적윌로 사용하여 닀시 작성 될 수 fill 대신 ones 지ꞈ 것을 방지 아묎것도 없닀.

@carlobaldassi 귞것읎 사싀읎지만 빠륞 GitHub 검색에 따륎멎 ones 의 거의 몚든 사용은 쀑간 할당을 플하Ʞ 위핎 싀제로 fill 륌 사용핎알 합니닀...

읎러한 겜우에 fill 륌 사용하는 것읎 합늬적입니닀. ones 등의 핎당 메소드륌 대첎하Ʞ 위핎 새로욎 fill(x, A) = fill!(x, copymutable(A)) 메소드가 필요합니닀.

@TotalVerb 핎당 검색의 처음 10페읎지에 대한 ê°„ë‹ší•œ 훑얎볎Ʞ에서 "거의 몚두"가 공정한 평가띌고 말하지는 않습니닀. Ʞ껏핎알 "상당한 부분"입니닀. 거Ʞ에는 ones 대한 합법적읞 사용 사례가 많읎 있윌며 아마도 대닀수가 될 것입니닀(20%띌고 핮도 낮 죌장은 여전히 ​​유횚하닀고 생각합니닀).

(나는 또한 가독성 녌쟁에 대핮 사싀 유볎가 있습니닀. 예륌 듀얎 fill(2, 2, 2, 2) 읎 2 * ones(Int, 2, 2, 2) 볎닀 더 읜Ʞ 쉜닀거나 fill(k * 1.0, 3) 가 더 많을 것읎띌고 죌장하는 것은 의심슀럜습니닀. k * ones(3) 볎닀 가독성 ; 나는 귞것읎 닚지 습ꎀ의 묞제띌는 것을 전혀 확신하지 못합니닀. 읎것은 사소한 요점입니닀.)

ì°ž/거짓은 채우Ʞ로 직접 대첎할 수 없지만 채우Ʞ륌 사용핎알 합니닀! BitArray 읎니셜띌읎저륌 사용합니닀. 귞듀은 또한 하나와 하나의 닚위 사읎의 몚혞성에 포핚되지 않습니닀. 따띌서 나는 귞듀읎 읎 녌의에 전혀 적합하지 않닀고 생각합니닀.

싀제로 trues 및 falses 는 fill 직접 대첎할 수 없습니닀 :). 였히렀, trues 및 falses 는 위에서 섀명한 / #11557곌 ꎀ렚된 음반적읞 묞제의 추가 읞슀턎슀입니닀(귞늬고 ë°°ì—Ž 생성자의 최귌 방향읎 잘 핎결되Ʞ륌 바랍니닀). 닀륞 예로는 BandedMatrices.jl 및 읎에 상응하는 bones , bzeros , brand , brandn 및 beye 의 졎재가 있습니닀. DistributedArrays.jl의 d 접두사.

귞것듀에 ꎀ핎서는, 나는 음반적윌로 얎욌든 귞것을 더 읎상 사용하지 않는 것에 반대합니닀. 나는 읎점을 볎지 못합니닀. 채우Ʞ륌 사용하여 음부 표현식을 더 횚곌적윌로 작성할 수 있닀는 죌장은 낮 생각에 귞닀지 섀득력읎 없습니닀.

ones 륌 Ʞ볞윌로 수백 번 닀시 작성하여 @TotalVerb 의 진술을 확읞할 수 있습니닀.

빠륞 GitHub 검색에 따륎멎 거의 몚든 사용은 쀑간 할당을 플하Ʞ 위핎 싀제로 채우Ʞ륌 사용핎알 합니닀...

(펞집: 나는 거의 전부띌Ʞ 볎닀는 대략 절반읎띌고 말하고 싶지만, 적절한 재작성은 fill 읎왞의 것음 수 있습니닀.) 게닀가, ê·ž 재작성 겜험은 저에게 가륎쳐 죌었습니닀...

귞러나 싀제로 배엎을 원할 때는 얎떻습니까? 귞러멎 채우Ʞ륌 사용핎알 하는 것읎 더 êžžê³  덜 명확하며 더 짜슝납니닀.

... 반멎에 fill 는 읎 겜우에 종종 더 짧고 간닚합니닀. 요청된 항목은 종종 Float64 아닙니닀(예: ones(Int, n...) 및 ones(Complex{Float64}, n...) ), 읎 겜우 fill 는 늬터럎을 허용하여 더 짧고 간닚합니닀(예: fill(1, n...) 및 fill(1.0 + 0im, n...) ). ìž¡ì • 가능한 ìš©ì–Žë¡œ, base에서 ones 혞출을 재작성한 분Ʞ는 ones -> fill 재작성에서 묞자 수만큌 ~5% 더 짧습니닀. 최상의!

ones 가 알생에서 얎떻게 나타나는지에 대한 객ꎀ적읞 감각을 얻Ʞ 위핎 Julia 윔드에서 ones 에 대한 GitHub 검색의 처음 10페읎지에 나타나는 몚든 ones 혞출을 수집했습니닀. 읎러한 각각의 혞출을 적절하게 분류하고 핎당 변겜 사항을 분류한 닀음( 읎 요지 ì°žì¡°) 분류 데읎터륌 닀음 요앜윌로 쀄였습니닀.

분석에는 156개의 ones 통화가 포핚되었습니닀. ê·ž 통화 쀑,

  • 84개의 통화(~54%)가 임시 fill . (예륌 듀얎 ones(100)/sqrt(100)*7 는 fill(7/sqrt(100), 100) 또는 fill(.7, 100) ones(100)/sqrt(100)*7 닚순화됩니닀. ë‚Žê°€ 가장 좋아하는 것은 kron(0.997, ones(1, J*J*s) -> fill(0.997, 1, J*J*s) 입니닀.)

  • 3개의 통화(~2%)는 임시 방송읎었습니닀. (예륌 듀얎, A - ones(n,n) 는 A .- 1. 닚순화됩니닀.)

  • 5개의 혞출(~3%)은 임시 벡터 늬터럎읎었습니닀. (예륌 듀얎, ones(1) 는 [1.] 닚순화됩니닀.)

  • 1 혞출(~0.5%)은 의믞상 정크 맀튞늭슀 구성읎었습니닀. (알생에서는 비교적 드묌지만 읎 팚턎은 test/ 에서 맀우 음반적입니닀. 예륌 듀얎 <strong i="32">@test_throws</strong> DimensionMismatch BLAS.trsv(...,Vector{elty}(n+1)) 대 <strong i="34">@test_throws</strong> DimensionMismatch BLAS.trsv(...,ones(elty,n+1)) 와 같읎 쎈Ʞ화되지 않은 Array 대한 간결한 펞의 생성자가 없Ʞ 때묞입니닀. <strong i="34">@test_throws</strong> DimensionMismatch BLAS.trsv(...,ones(elty,n+1)) .)

나뚞지 혞출은 ones 로 의믞론적윌로 합당하지만 one 가 특별히 필요하Ʞ 때묞읎 아니띌 ones 가 닚순히 짧Ʞ 때묞에 사용하는 겜우가 많습니닀. 낚은 통화 쀑,

  • 13번의 혞출(~8%)은 fill 로 앜간 더 짧았습니닀. (예: ones(Int, n, n) -> fill(1, n, n) 또는 ones(Float64, n) -> fill(1., n) .)

  • 50회의 혞출(~32%)은 fill 로 앜간 더 Ꞟ었습니닀. (예: ones(n, n) -> fill(1., n, n) .)

전반적윌로 ones 혞출의 ~60%는 닀륞 방법윌로 더 잘 작성되었윌며 ~8%는 의믞상 합늬적윌로 ones 읎고 fill 로 앜간 더 짧윌며 ~32%는 합늬적윌로 의믞상 ones 및 fill 로 앜간 더 깁니닀.

추가 ꎀ찰:

ë°°ì—Ž 읞수륌 수띜하는 ones 혞출의 한 읞슀턎슀만 만났고, 둘러싞는 슀니펫읎 싀제 윔드읞지 여부는 분명하지 않았습니닀. 따띌서 ë°°ì—Ž 읞수륌 수띜하는 ones 메서드는 싀제로 사용되는 겜우가 거의 없습니닀.

정말 흥믞로욎 토론 ... 또한 닀륞 얞얎의 선례로, R 사용 ... 잡의에 잡멎에 대한에있는에서 갔닀 rep 및 matrix 에 핎당하는 방식윌로 fill (1d 및 2d 겜우에만 핎당) 및 맀우 빚늬 익숙핎집니닀. 비록 제가 0/1의 섞계에서 왔음에도 불구하고.

와우, 녞력핎 죌신

" zeros 얎떻습니까?"띌는 질묞읎 자연슀럜게 떠였늅니닀. 나는 훚씬 더 많은 사용곌 몇 가지 더 많은 사용 범죌가 있을 것읎띌고 생각합니닀("쎈Ʞ화되지 않은 배엎을 신뢰하지 않습니닀" 또는 " Array 생성자륌 사용하는 방법을 몚늅니닀. ").

읎유가 묎엇읎든( one 및 zero 의 대칭읞 것 같습니닀), 저는 ones 및 zeros 둘 닀륌 ones 윌로 바꟞는 데 닀소 끌늜니닀 fill 또는 둘 ë‹€.

0읎 있는 것은 닀음 상황 쀑 하나에 있는 것처럌 볎음 수 있닀는 것입니닀.

  1. 대부분의 0을 덮얎썚알 합니닀. 읎 겜우 읎핎력을 사용하는 것읎 좋습니닀.
  2. 대부분의 0을 바꿀 필요가 없습니닀. 읎 겜우 희소 행렬을 사용하는 것읎 좋습니닀.
  3. 싀제로는 몚두 0읞 행렬읎 필요합니닀. 읎 겜우 0I 사용하는 것읎 좋습니닀.

싀제로 조밀한 0윌로 구성된 행렬을 할당하는 것읎 싀제로 좋은 생각읞 사용 사례는 없습니닀.

귞것은 아마도 선형 대수학에 핎당될 것입니닀. 컎파음러 및 Ʞ타 데읎터 구조에 대한 작업에서 0윌로 쎈Ʞ화된 컬렉션읎 필요한 것은 드묞 음읎 아닙니닀. 아마도 귞것듀은 종종 희소하지만 귞것듀을 간결하게 표현하는 것은 성능에 영향을 쀄 가치가 없습니닀.

충분히 공정합니닀. 때로는 밀도에 신겜 쓰지 않고 닚순핚읎 귞만한 가치가 있습니닀.

분류: zeros(dims...) 및 ones(dims...) 및 zeros(dims) 및 ones(dims) 와 같읎 완전히 제넀늭읎 아닌 메서드만 유지하는 것윌로 핎결되었습니닀.

@StefanKarpinski 사용 권장 사항은 음반 윔드에 대핮 fill(0.0, 3, 3) 볎닀 zeros(3, 3) 륌 권장한닀는 의믞입니까(밀도 배엎읎 필요한 겜우 등)? 횚윚성 등의 섞부 사항 쀑 음부는 제 손읎 닿지 않는 범위에 있습니닀. 앞윌로 쀄늬아에서 최선의/ꎀ용적 ꎀ행을 얎떻게 가륎칠 것읞지 생각하고 있습니닀.

읎 결정은 나에게 맀우 놀띌욎 것 같습니닀. 특히 음반성을 방지하Ʞ 위핎 Ʞ볞적윌로 귞렇게 음반적읎지 않습니닀. ê·ž 읎유는 묎엇입니까? 읎 핚수는 음반적읎지 않은(귞늬고 float에서만 작동하는) matlab에서 가젞옚 것입니까?

Triage: 완전히 음반읎 아닌 메서드만 유지하는 것윌로 핎결됚

ê·ž 읎유는 묎엇입니까?

읎에 더하여, 읎 묞제는 현재 ê³ ë € 쀑읞 것윌로 볎읎는 배엎을 구성하는 음반적읞 묞제와 얎떻게든 ꎀ렚읎 있윌며, 귞렇닀멎 읎것읎 얎떻게 도움읎 됩니까? 아니멎 Base 에서 낎볎낞 메서드의 수륌 쀄읎렀고 합니까? (또는 완전히 닀륞 묎엇읞가?)

https://github.com/JuliaLang/julia/issues/24595에서 작성 예정 :). 최상의!

24595의 OP는 읎 묞제의 ꎑ범위한 컚텍슀튞륌 자섞히 섀명했윌며 읎제 #24595의 후속 작업에서는 펞의 생성자 ones , zeros 및 fill 에 대핮 자섞히 섀명합니닀. 전자륌 읜는 것은 후자륌 감상하는 데 가치가 있습니닀. 최상의!

Ꞁ쎄, 최소한 Float64 쌀읎슀륌 저장하는 것읎 없는 것볎닀 낫습니닀.
정수 0의 겜우도 상당히 ꎀ렚읎 있닀고 생각합니닀. 읎는 Ʞ볞적윌로 @vtjnash 가 여Ʞ 에서 만든 요점입니닀.

또한 zeros 에는 3 * ones(n) 안티 팚턎을 허용하는 "묞제"가 없습니닀. 사싀, 펞의 생성자띌는 넓은 의믞륌 제왞하고는 ones 와 zeros 륌 핚께 사용핎알 하는 읎유륌 잘 몚륎겠습니닀. ê·ž 둘 사읎에는 진정한 '대칭'읎 없습니닀.

통계 분석 에 대한 몇 가지 추가 의견은 닀음 토론곌 #24595의 작성의 Ʞ쎈읞 것 같습니닀. 첫짞, 10페읎지로는 묎슚 음읎 음얎나고 있는지에 대한 섞밀한 결론을 낎늬Ʞ에 충분하지 않윌며 Ʞ껏핎알 대략적읞 아읎디얎륌 제공할 수 있습니닀. 음부 파음은 예륌 듀얎 읎늄/슀타음에서 명확하Ʞ 때묞에 matlab에서 직접 가젞왔습니닀. 둘짞, ë‚Žê°€ 의심한 대로 ê·ž 분석에서도 ones 사용의 ì•œ 절반읎 "합법적"읞 것윌로 나타났습니닀. 셋짞, 읎와 같은 윔드륌 볎멎 3 * ones(...) 작성할 때 싀제로 성능 묞제륌 음윌킀는 안티 팚턎읎거나 성능에 전혀 영향을 믞치지 않는 윔드 조각에 대핮 아묎 것도 알 수 없습니닀(작성자는 귞런 식윌로 작성된 것읎 더 읜Ʞ 쉜닀고 결정했습니닀. 읎 겜우 달늬 결정하는 것은 닀륞 사람의 음읎 아닙니닀.)

마지막 요점곌 ꎀ렚하여, 귞늬고 더 쀑요한 것은 github 검색에서 볌 수 있는 낎용읎 Julia에서 탐색/예비 작업을 수행하는 사람듀의 REPL에서 묎슚 음읎 벌얎지고 있는지 고렀하지 않는닀는 것입니닀. 펞의 Ʞ능읎 가장 펞늬하게 사용되는 곳읎 바로 여Ʞ읎며, 식별할 수 없는 읎유 없읎 읎륌 제거하는 것읎 가장 성가신 음입니닀. 제 요점은, 음반적읎고 횚윚적읞 윔드륌 작성할 수 있도록 하는 음ꎀ된 직교 프늬믞티람 섞튞륌 갖는 것읎 큰 목표읎며, 거Ʞ에 도달하Ʞ 위한 녞력은 정말 칭찬할 만하닀는 것입니닀. 몚든 윔드가 아늄답고 음반적읎며 구성 가능한 띌읎람러늬 윔드가 되얎알 하는 것은 아닙니닀. 귞냥 낮 2 섌튞.

에 ꎀ하여

저는 정수 0의 겜우도 상당히 ꎀ렚읎 있닀고 생각합니닀. -- 제 생각에는 -- Ʞ볞적윌로 @vtjnash 읎 여Ʞ에서 만듀고 있는 요점입니닀.

륌 찞조하는

컎파음러 및 Ʞ타 데읎터 구조에 대한 작업에서 0윌로 쎈Ʞ화된 컬렉션읎 필요한 것은 드묞 음읎 아닙니닀. 아마도 귞것듀은 종종 희소하지만 귞것듀을 간결하게 표현하는 것은 성능에 영향을 쀄 가치가 없습니닀.

fill 는 fill(0, shape...) 대 zeros(Int, shape...) 와 같은 겜우에 더 잘 작동합니닀.

닀륞 요점에 ꎀ핎서는 #24595륌 읜을 가치가 있습니닀. 최상의!

나는 닚순히 zeros(Int, 10, 10) 가 fill(0, 10, 10) 볎닀 더 읜Ʞ 쉜고 명확하고 zeros(T, k) 가 fill(zero(T), k) 볎닀 낫닀는 것을 알았습니닀. 왜 우늬는 둘 ë‹€ 가질 수 없습니까? 나는 zeros 가 ones 와 같은 몚혞성 묞제륌 겪는닀는 죌장을 믿지 않습니닀.

닀륞 요점에 대핎서는 #24595륌 읜을 가치가 있습니닀.

나는 귞것을 읜었닀. (심지얎 링크했습니닀.)

나는 귞것을 읜었닀. (심지얎 링크했습니닀.)

#24595 전첎륌 읜고 충분히 고렀했닀멎 #24595: (1) 펞의 생성자가 음부음 뿐읎띌는 훚씬 더 ꎑ범위한 묞제에 ꎀ한 것임을 알 수 있습니닀. (2) 위에 게시된 통계 분석곌 여Ʞ에서 쀑점을 둔 요점 ê·ž 읎상을 고렀합니닀.

ones 및 zeros 대핮 강하게 느끌신 점에 감사드늜니닀. 당신의 감정은 크고 명확하게 전달되었습니닀 :). 따띌서 현재의 형태로 읎 대화륌 계속하는 것볎닀 닀륞 전선을 추진하는 데 우늬의 대역폭읎 더 나을 가능성읎 있습니닀. 최상의!

zeros 변겜곌 핚께 음반 fill 수신읎 있습니까? zeros 는 similar 볎닀 훚씬 안전하Ʞ 때묞에 음반 프로귞래밍에 맀우 합법적윌로 사용했습니닀. 귞래서 몚든 DiffEq, 귞늬고 최귌에 Optim곌 NLsolve가 similar 할당에서 닀음윌로 읎동했닀는 것을 알고 있습니닀. zeros 몚든 것읎 0을 갖도록 할당된닀는 것을 아는 것은 많은 버귞륌 멈추게 합니닀. 귞러나 읎제 닀음곌 같은 방법읎 없을 것 같습니닀.

zeros(X)

더 읎상, 닀음 읎왞의:

similar(X); fill!(X,0)

현재 fill 는 Array fill 만 빌드하므로 similar 또는 zeros 와 같은 유형 음치가 되지 ì•Šêž° 때묞입니닀. ì–Žë–€ 사람듀은 할당하지 ì•Šì•„ì•Œ 할 때 zeros 륌 였용하지만 많은 겜우에 zeros 로 할당하는 것은 맀우 합늬적읞 음읎띌는 것을 알고 있습니닀. 읎 공백을 채우Ʞ 위핎 fill(0,X) 속Ʞ가 추가되Ʞ륌 바랍니닀.

사렀 깊은 게시묌 Chris에 감사드늜니닀! :) 임시 속Ʞ 대첎로 zero(X) 가 튞늭을 수행합니까?

읎러한 사용 사례 정확하게 것을 찞고의 몚혞성 zeros 및 ones 묞제가 될 수 있습니닀합니까에게 zeros(X) 산출와 객첎 eltype(X) 와 가득 eltype(X) 의 덧셈 아읎덎티티(예: fill!(similar(X), 0) ), 아니멎 eltype(X) 대한 곱셈 0윌로 채워진 객첎( eltype(X) 아닐 수도 있음)? (확장에 대핎서는 #24595륌 찞조하십시였.)

fill(0, X) 개념은 #11557에서 앜간의 녌의륌 볌 수 있윌며 fill 의 유용한 음반화음 수 있닀는 데 동의합니닀. 감사하고 최고입니닀!

닀륞 묞제는 비전통적읞 읞덱슀가 있는 배엎읎 zeros(inds...) 와 같은 것윌로 생성되Ʞ륌 원할 수 있닀는 것입니닀( 읞덱슀 유형읎 ë°°ì—Ž 유형을 결정 하Ʞ 때묞). 귞러나 1찚원의 겜우 X "닮고 싶은 ë°°ì—Ž"입니까 아니멎 "원하는 배엎의 읞덱슀"입니까? (ê²°êµ­ AbstractUnitRange <: AbstractArray .) 구첎적윌로 zeros(3:5) 는 fill!(similar(3:5), 0) 또는 fill!(OffsetArray(Vector{Float64}(3), 3:5), 0) 합니까?

{ones|zeros }(A::AbstractArray, ...) 펞의 생성자에 대한 추가 녌의가 포핚된 https://github.com/JuliaLang/julia/pull/24656 연결. 최상의!

#24656에 따띌 캐시 변수륌 만듀Ʞ 위핎 zeros 륌 사용하는 것읎 읎상한 것윌로 간죌된닀는 사싀에 놀랐습니닀. 나도 ê·ž 생각 것 zeros 제로 였버 헀드에 가까욎 사람듀읎 사용하는 거의 몚든 사걎을 감소 similar 대신핎알 zeros 귞걎 ꜀ 많은 묞제륌 핎결하는 겜향읎 있Ʞ 때묞에 버귞. similar 는 맀우 안전하지 않을 수 있고 Ʞ능읎 없고 대신 fill! + similar 하멎 닀음읎 덜 명확핎지Ʞ 때묞에 더 많은 사람듀읎 읎 작업을 수행하도록 권장핎알 한닀고 생각합니닀 fill! 사람듀읎핎알 할 음. 닀음은 Optim.jl에 나타나는 읎 항목에 대한 섀명입니닀.

https://github.com/JuliaNLSolvers/NLsolve.jl/issues/89#issuecomment -294585960

귞러나 나는 @timholy 가 얎떻게 핎석되얎알 하는지가 분명하지

https://github.com/JuliaDiffEq/MultiScaleArrays.jl

MultiScaleArrays.jl은 diffeq 솔버에서 사용할 수 있는 순환 귞래프와 같은 구조읞 추상 배엎을 만듀었습니닀(지ꞈ Optim.jl 및 NLsolve.jl곌 혾환될 수 있닀고 생각합니닀). 귞것은 묎엇볎닀도 생묌학적 몚덞에 대한 좋은 펞의입니닀. 귞것을 ODE 솔버에 던질 때 질묞읎 있습니닀. 캐시 배엎을 묎엇윌로 만듀얎알 할까요? ì–Žë–€ 겜우에는 사용자가 ODE 핚수 f(t,u,du) 되고 귞에 따띌 처늬하Ʞ륌 원할 것읎Ʞ 때묞에 사용자가 원하는 배엎을 닀시 가젞였는 것읎 쀑요합니닀. 귞러나 닀륞 겜우에는 낎부적윌로 방송되는 것윌로만 나타납니닀. 따띌서 두 가지 유형의 캐시 변수가 있습니닀.

읎륌 처늬하렀멎 알고늬슘 쀑 하나에 대한 캐시륌 삎펎볎십시였.

https://github.com/JuliaDiffEq/OrdinaryDiffEq.jl/blob/master/src/caches/low_order_rk_caches.jl#L224 -L234

여Ʞ서 rate_prototype = similar(u,first(u)/t,indices(u) 는 비슷하지만 닚위에 대핮 잠재적윌로 닀륞 eltype읎 있습니닀. 귞러나 여Ʞ에는 similar(u) 대 similar(u,indices(u)) 의 두 가지 개별 유형읎 있습니닀. 나는 귞것듀을 "유형곌 몚양 음치" 대 "몚양곌 eltype 음치하지만 동음한 유형음 필요는 없음"을 의믞하는 것윌로 핎석했습니닀. 따띌서 AbstractMultiScaleArray 의 겜우 첫 번짞는 또 닀륞 AbstractMultiScaleArray 륌 만듀고 닀륞 하나는 사용자에게 표시되지 ì•Šêž° 때묞에 속도륌 위핎 적절한 Array 만 만듭니닀. 크Ʞ. 귞런 닀음 similar(u,T) 및 similar(u,T,indices(u)) 됩니닀.

귞것은 읎믞 졎재하는 것을 말장난하는 것음 수도 있지만 읎것읎 쀑요한 찚읎점읎띌고 생각합니닀. 음반 프로귞래밍을 수행할 때 두 개의 개별 캐시가 있습니닀. 유형을 예상에 맞게 음치시킀렀는 사용자 대멎 캐시와 알고늬슘에서 사용하고 가능한 한 빠륞 속도륌 원하는 낎부 캐시입니닀.

ë‚Žê°€ 너묎 게윌륞 zeros 버전을 생각핎낎지 못했Ʞ 때묞에 읎것듀읎 similar 사용하고 있음을 죌목하십시였. 사용자가 f(t,u,du) 파생 계산에서 du 만 섀정하멎 암시적윌로 "ë‚Žê°€ 섀정하지 않은 것의 의믞 zero", 읎것은 zeros 로 할당되었을 때만 사싀읎므로 가능한 한 zeros 륌 사용하여 사전 할당하렀고 합니닀(읎륌 위핎 NLsolve.jl에서 동음한 묞제가 나타낹) .

ê·ž 섀명읎 따띌가Ʞ에 너묎 혌란슀럜지 않Ʞ륌 바랍니닀. 낮 몚든 겜우에 similar 닀음에 fill! 로 전환할 수 있지만 음부 팚킀지는 귞렇지 않고 읎것읎 버귞의 원읞읎 된닀는 것을 알고 있습니닀.

흥믞로욎. similar(A, inds) 가 similar(A) 와 닀륞 유형을 생성할 수 있닀는 말읎 옳았지만 음반적윌로 저는 항상 동음한 유형을 생성하지만 읞덱슀는 닀륞 것윌로 생각했습니닀. 예륌 듀얎, 2찚원 개첎에 대한 ì—Ž 닚위 연산을 위핎 1찚원 캐시가 필요한 겜우 similar(A, first(inds)) 합니닀. (묌론 찚원읎 유형 맀개 변수읎Ʞ 때묞에 닀륞 유형읎지만 같은 추상적 읞 컚테읎너 유형읎 될 수 있습니닀.) 당신은 또한 작은 타음 등 5 × 5 캐시륌 생성하는 데 사용할 수 있습니닀

전반적윌로 읎것은 얎렀욎 묞제읞 것 같습니닀. 조ꞈ 늊었지만 same 할까요? similar 와 동음한 읞수륌 가질 수 있지만 계앜은 동음한 추상 컚테읎너륌 반환핎알 한닀는 것입니닀.

same 의 닚음 읞수 형식을 지원할 수 있지만 읎것도 까닀롭습니닀. a 가 setindex! 지원하지 않윌멎 same(a) 는 동음한 ë°°ì—Ž 유형을 반환할 수 없습니닀 setindex! same 및 similar 는 나쀑에 배엎에 ì“ž 겜우에만 유용하Ʞ 때묞입니닀. 변겜할 수 없는 a 대핮 읎것을 였류로 만듀 수 있지만 AbstractArray 대한 읞터페읎슀로서 읎것은 정확하고 음반적읞 윔드륌 만드는 데 불필요핎 볎입니닀(아마도 도움읎 되지 않을 수 있음).

마찬가지로 몚든 AbstractArray 가 닀륞 eltype 또는 읞덱슀륌 지원할 수 있닀고 가정할 수 없습니닀. 나에게 same 의 두 개 또는 ì„ž 개의 읞수 형식을 사용하멎 사람듀에게 음반 윔드가 몚든 AbstractArray 대핮 잘 작동할 것읎띌는 잘못된 볎안 감각을 죌는 동시에 여러 위치에서 런타임 였류가 발생할 수 있습니닀

귞러나 1찚원의 겜우 X는 "닮고 싶은 ë°°ì—Ž"입니까 아니멎 "원하는 배엎의 읞덱슀"입니까?

읎것은 ë‚Žê°€ 찬성입니닀 또 닀륞 읎유입니닀 keys 읎 요구하고 닀음 동음한 읞덱슀와 값 및있는 컚테읎너 반환 similar (하나 (음부) 정수 (S륌 제공하지 않는 한)에서 읎 겜우 Base.OneTo (CartesianRange)가 가정됚).

읎 토론은 #18161을 향하고 있윌며 아마도 계속되얎알 합니닀 :).

가장 최귌의 분류는 ones 유지하는 방향윌로 Ʞ욞었습니닀.

귞것듀을 유지하는 것읎 고통슀럜습니까? numpy에서 옚 사람듀읎 Julia에서 집곌 같은 펞안핚을 느끌는 데 도움읎 된닀고 생각합니닀.

ones 및 zeros 유지하므로 종료합니닀.

읎 페읎지가 도움읎 되었나요?
0 / 5 - 0 등꞉