Numpy: νŽ‘ν‚€ vstack

에 λ§Œλ“  2020λ…„ 07μ›” 22일  Β·  7μ½”λ©˜νŠΈ  Β·  좜처: numpy/numpy

vstack λ¬Έμ„œμ—μ„œ :

μ„œλͺ… : hstack(tup)
독 슀트링 :
배열을 μˆ˜ν‰μœΌλ‘œ μˆœμ„œλŒ€λ‘œ μŒ“μŠ΅λ‹ˆλ‹€ (μ—΄ 방식).

이것은 1-Dλ₯Ό μ œμ™Έν•˜κ³  두 번째 좕을 따라 μ—°κ²°ν•˜λŠ” 것과 κ°™μŠ΅λ‹ˆλ‹€.
첫 번째 좕을 따라 μ—°κ²°λ˜λŠ” λ°°μ—΄.

λ‚΄ μ§ˆλ¬Έμ€ μ™œ μ˜ˆμ™Έμž…λ‹ˆλ‹€ ???
이미 concatenate() μžˆμŠ΅λ‹ˆλ‹€.

μž¬ν˜„ μ½”λ“œ 예 :

v = rand(5)
concatenate((v, v)).shape
(10,)

hstack((v, v)).shape
(10,)

stack((v, v), axis=1).shape
(5, 2)

vstack((v, v)).shape
(2, 5)

stack((v, v), axis=0).shape
(2, 5)

vstack = stack(axis=1) λ₯Ό κ°–λŠ” 것이 훨씬 더 ν•©λ¦¬μ μž…λ‹ˆλ‹€.

33 - Question

λͺ¨λ“  7 λŒ“κΈ€

hstack / vstack / dstack을 ꢌμž₯ν•˜μ§€ μ•ŠμœΌλ©°, λŒ€μ‹  np.stack λ₯Ό νŠΉλ³„νžˆ ꢌμž₯ν•©λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ 차이점은 2 차원 배열을 μ „λ‹¬ν•˜λŠ” κ²½μš°μž…λ‹ˆλ‹€. μŠ€νƒ ν•¨μˆ˜ 쀑 μΌλΆ€λŠ” μƒˆλ‘œμš΄ 차원을 μ‚½μž…ν•˜μ§€λ§Œ (νŠΉμ • ν™”μ‹ μ˜ 경우) hstack λŠ” 그렇지 μ•Šμ€ 것 κ°™μŠ΅λ‹ˆλ‹€.

np.concatenate λ˜λŠ” np.stack 쀑 ν•˜λ‚˜κ°€ μ„ ν˜Έλ˜λŠ” API (일반적으둜)λΌλŠ” λ§ˆμ§€λ§‰ λ¬Έμž₯을 μΆ”κ°€ν•˜λŠ” 것은 μ’‹μ§€λ§Œ ν•¨μˆ˜ μ‚­μ œμ— λŒ€ν•œ μ‹€μ œ 열망이 μ—†λ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€.

λ‚΄ μ§ˆλ¬Έμ€ _ μ™œ μ˜ˆμ™Έμž…λ‹ˆλ‹€ _ ???

@seberg κ°€ 직접 λŒ€λ‹΅ν•˜μ§€ μ•Šμ•˜κΈ° λ•Œλ¬Έμž…λ‹ˆλ‹€.

  • 였래 전에 λˆ„κ΅°κ°€κ°€ 쒋은 생각이라고 μƒκ°ν–ˆμŠ΅λ‹ˆλ‹€
  • 이제 λͺ¨λ‘λ₯Ό 깨지 μ•Šκ³  λ³€κ²½ν•˜κΈ°μ—λŠ” λ„ˆλ¬΄ λŠ¦μ—ˆμŠ΅λ‹ˆλ‹€.

1D 배열은 일반적으둜 "수직"이 μ•„λ‹Œ numpyμ—μ„œ "μˆ˜ν‰"으둜 μ²˜λ¦¬λ©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄ (N,) 1D λ°°μ—΄λ‘œ (N, N) 2D 배열을 λΈŒλ‘œλ“œ μΊμŠ€νŒ… ν•  λ•Œ 1D 배열은 (N, 1) μ•„λ‹Œ (1, N) λΈŒλ‘œλ“œ μΊμŠ€νŠΈλ©λ‹ˆλ‹€. hstack()/vstack()/dstack() λŠ” μƒμˆ˜ μΆ•μ˜ κ°œλ… (μ›ν•˜λŠ” 경우 stack() μ‚¬μš©ν•  수 있음)을 μ€‘μ‹¬μœΌλ‘œ κ΅¬μΆ•λ˜μ§€ μ•Šμ•˜μ§€λ§Œ κ³ μ • 좕에 κΉ”λ”ν•˜κ²Œ λ§€ν•‘λ˜μ§€ μ•ŠλŠ” "μˆ˜ν‰ / 수직 / 깊이"κ°œλ… λͺ¨λ“  λ°°μ—΄ 차원.

λ‚˜λŠ” κ·Έ 자체둜 hstack()/vstack()/dstack() λ‚™λ‹΄ν•˜λŠ” 언어에 λŒ€ν•΄ -1μž…λ‹ˆλ‹€. λ‚˜λŠ” _ μ—¬μ „νžˆ _ 그것듀이 의미둠의 μ˜ˆμ™Έ λ•Œλ¬Έμ— ν›Œλ₯­ν•˜κ³  μœ μš©ν•˜λ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€. stack() μ˜ν•΄ κ°„κ²°ν•˜κ²Œ ν¬μ°©λ˜μ§€ μ•Šμ€ κ°œλ…μ„ ν¬μ°©ν•©λ‹ˆλ‹€.

예λ₯Ό λ“€μ–΄, 1D λ°°μ—΄ μ•žμ— 슀칼라 값을 μΆ”κ°€ν•˜κ±°λ‚˜ μΆ”κ°€ν•΄μ•Όν•˜λŠ” 일반적인 μš”κ΅¬κ°€ μžˆμŠ΅λ‹ˆλ‹€. np.hstack([0.0, some_vector]) 이 (κ°€) 이에 μ ν•©ν•©λ‹ˆλ‹€. np.stack([0.0, some_vector]) 와 np.concatenate([0.0, some_vector]) λŠ” 같은 차원이 μ•„λ‹ˆκΈ° λ•Œλ¬Έμ— λ³΄ν¬ν•©λ‹ˆλ‹€.

사싀, μ΄λŸ¬ν•œ λ„κ΅¬λŠ” 제 생각에 주어진 μ»¨ν…μŠ€νŠΈμ—μ„œ μž‘μ—…ν•˜λŠ” 것과 관련이 μžˆμŠ΅λ‹ˆλ‹€. κ·ΈλŸ¬λ‹ˆ κ·Έλƒ₯ λ‹«κ² μŠ΅λ‹ˆλ‹€. μš°λ¦¬λŠ” "νŽ‘ν‚€ ν•œ"λ™μž‘μ΄μ—†λŠ” 일반 도ꡬλ₯Ό 가지고 있으며 λ‹€λ₯Έ λ„κ΅¬λŠ” 쒋은 μœ ν‹Έλ¦¬ν‹° 일 λ•Œ μœ μ§€λ©λ‹ˆλ‹€.

@rkern , concatenate μˆ˜μ •μ΄ ν•„μš”ν•©λ‹ˆλ‹€, IMHO. μŠ€νƒœν‚Ήμ€ μ—¬κΈ°μ—μ„œ κ³ λ €λ˜μ§€ μ•ŠλŠ” μΆ”κ°€ ν¬λ―Έν•œ 뢀뢄을 μΆ”κ°€ ν•œ ν›„ μ—°κ²°ν•˜λŠ” 것을 μ˜λ―Έν•©λ‹ˆλ‹€. ν•˜μ§€λ§Œ μ’‹μ•„μš” ...

@seberg , μ‚¬μš© 쀑단 κ²½κ³ κ°€ μ—¬κΈ°μ—μ„œ ν™˜μ˜λ°›μ„ 것 κ°™μŠ΅λ‹ˆλ‹€. 1D 배열은 μˆ˜ν‰μ΄λ‚˜ 수직이 μ•„λ‹™λ‹ˆλ‹€. 그리고 hstack λŠ” concatenate λŒμ•„κ°€μ„œ μΆ”κ°€ 차원을 μΆ”κ°€ν•˜λŠ” 것을 μžŠμ—ˆμŠ΅λ‹ˆλ‹€. 이것은 μ‹€μ œλ‘œ "νŽ‘ν‚€"ν•΄ λ³΄μž…λ‹ˆλ‹€. ν•˜μ§€λ§Œ 당신이 λ…Όμ˜ ν•  μ‹œκ°„μ΄ μ—†λ‹€λ©΄ 음 ...

λ‹€λ₯Έ λͺ¨λ“  ?stack ν•¨μˆ˜λŠ” ν˜„μž¬ μž‘μ—…μ„ μˆ˜ν–‰ν•˜λŠ” 데 ν•„μš”ν•œ 것보닀 ν¬λ―Έν•œ κ²½μš°μ—λ§Œ μΆ”κ°€ 희미 함을 μΆ”κ°€ν•©λ‹ˆλ‹€. 이 κ²½μš°μ—λŠ” 0d 만 ν¬ν•¨λ©λ‹ˆλ‹€.

@Atcold λ‚˜λŠ” μ‚¬μš©μžλ₯Ό stack λ„› μ§€ν•˜ λΌλŠ” μ œμ•ˆμ„ λ°›κ³  μžˆμ§€λ§Œ μ•„λ§ˆλ„ μ΄λŸ¬ν•œ κΈ°λŠ₯을 μ‚¬μš©ν•˜λŠ” 것을 적극적으둜 λ‘λ €μ›Œν•˜μ§€ μ•ŠλŠ” λ²”μœ„ λ‚΄μ—μžˆμ„ κ²ƒμž…λ‹ˆλ‹€.

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰