Numpy: ndarrayλŠ” collections.abc.Sequenceμ—μ„œ νŒŒμƒλ˜μ–΄μ•Όν•©λ‹ˆκΉŒ?

에 λ§Œλ“  2012λ…„ 12μ›” 01일  Β·  49μ½”λ©˜νŠΈ  Β·  좜처: numpy/numpy

@juliantaylor λŠ” νŒλ‹€ λ¬Έμ œμ—μ„œ

ν‹°μΌ“μ˜ 예 :

import numpy as np
import random
random.sample(np.array([1,2,3]),1)

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/user1/py33/lib/python3.3/random.py", line 298, in sample
    raise TypeError("Population must be a sequence or set.  For dicts, use list(d).")
TypeError: Population must be a sequence or set.  For dicts, use list(d).

이것은 3.3κ³Ό 1.7.0rc1.dev-3a52aa0, 3.2와 1.6.2μ—μ„œ λ°œμƒν•©λ‹ˆλ‹€.
λ¬Όλ‘  2.7은 영ν–₯을받지 μ•ŠμŠ΅λ‹ˆλ‹€.

cpython / Lib / random.py : 297의 κ΄€λ ¨ μ½”λ“œ

from collections.abc import Set as _Set, Sequence as _Sequence
def sample(self, population, k):
# ...
    if not isinstance(population, _Sequence):
        raise TypeError("Population must be a sequence or set.  For dicts, use list(d).")

λΉ„μŠ·ν•œ ν…ŒμŠ€νŠΈλ‘œ stdlib의 λ‹€λ₯Έ μœ„μΉ˜λ₯Ό grep ν•  수 μ—†μ—ˆμ§€λ§Œ lib2to3
κ°€μ • 된 동등성을 보여 μ£Όμ—ˆλ‹€ :

lib2to3/fixes/fix_operator.py
5:operator.isSequenceType(obj)   -> isinstance(obj, collections.Sequence)

2.7μ—μ„œ

In [6]: operator.isSequenceType(np.array([1]))
Out[6]: True

ν•˜μ§€λ§Œ 3.3 / 3.2μ—μ„œλŠ”

>>> isinstance(np.array([1]), collections.Sequence)
False

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

예, μ–΄λ”˜κ°€μ— Sequence.register(np.ndarray) λ₯Ό μΆ”κ°€ν•˜μ„Έμš”.

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

Python 3.xλŠ” λ‹¨μˆœνžˆ Python 2.x보닀 random.sample μ—μ„œ 더 μ—„κ²©ν•œ 검사λ₯Ό μˆ˜ν–‰ν•©λ‹ˆλ‹€. 2.xμ—μ„œ numpyλŠ” Sequence ν•˜μœ„ ν΄λž˜μŠ€λ„ μ•„λ‹™λ‹ˆλ‹€ (ndarrayμ—λŠ” index , count λ˜λŠ” __reversed__ λ©”μ„œλ“œκ°€ μ—†μŠ΅λ‹ˆλ‹€). κ·Έλž˜μ„œ μ €λŠ” 이것을 random.sample 의 였용 λ˜λŠ” Python 3.x의 ν•˜μœ„ ν˜Έν™˜μ„± μ€‘λ‹¨μœΌλ‘œ κ°„μ£Ό ν•  수 μžˆλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€.

μΆ©λΆ„νžˆ κ³΅ν‰ν•˜μ§€λ§Œ, μš°λ¦¬λŠ” μ‰½κ²Œ μ‹œν€€μŠ€λ₯Ό _make_ ndarray ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
μ΄λŸ¬ν•œ λͺ¨λ“  방법이 μ˜λ―Έκ°€ 있고 κ°„λ‹¨ν•˜κΈ° λ•Œλ¬Έμ—
도ꡬ. 사싀 κ·Έλ‘œλΆ€ν„° λ¬Όλ €λ°›λŠ” κ²ƒλ§ŒμœΌλ‘œλ„ μΆ©λΆ„ν•  κ²ƒμž…λ‹ˆλ‹€.
λˆ„λ½ 된 λͺ¨λ“  λ©”μ„œλ“œλ₯Ό 믹슀 인으둜 μ œκ³΅ν•©λ‹ˆλ‹€.
2012 λ…„ 12 μ›” 2 일 13:30에 "Ralf Gommers" [email protected]이 μž‘μ„±ν–ˆμŠ΅λ‹ˆλ‹€.

Python 3.xλŠ” λ‹¨μˆœνžˆ random.sampleμ—μ„œλ³΄λ‹€ μ—„κ²©ν•œ 검사λ₯Ό μˆ˜ν–‰ν•©λ‹ˆλ‹€.
Python 2.x. 2.xμ—μ„œ numpyλŠ” Sequence ν•˜μœ„ ν΄λž˜μŠ€λ„ μ•„λ‹™λ‹ˆλ‹€ (ndarrayμ—λŠ”
색인, 개수 λ˜λŠ” μ—­λ°©ν–₯ 방법). κ·Έλž˜μ„œ λ‚˜λŠ” 이것을 λ‹€μŒκ³Ό 같이 생각할 수 μžˆλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€.
random.sample의 였용 λ˜λŠ” 이전 λ²„μ „κ³Όμ˜ ν˜Έν™˜μ„± 쀑단
Python 3.x.

β€”
이 이메일에 직접 λ‹΅μž₯ν•˜κ±°λ‚˜ Gi tHubhttps : //github.com/numpy/numpy/issues/2776#issuecomment -10929601μ—μ„œ ν™•μΈν•˜μ„Έμš”.

더 λ―Έλ¬˜ν•˜κ²Œ λ§Œλ“œλŠ” 2to3 μ˜ˆμ œκ°€ μ•„λ‹ˆμ—ˆλ‹€λ©΄ λ‚˜λŠ” λ˜‘κ°™μ€ λ§μ„ν–ˆμ„ κ²ƒμž…λ‹ˆλ‹€.
색인 및 κ°œμˆ˜κ°€ ν•„μš”ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. 링크 ,
Sequence λŒ€ν•œ λͺ¨λ“  좔상 λ©”μ„œλ“œλŠ” 이미 κ΅¬ν˜„λ˜μ–΄ 있고 λ‹€λ₯Έ λ©”μ„œλ“œμ—λŠ” κΈ°λ³Έ κ΅¬ν˜„μ΄ μžˆμŠ΅λ‹ˆλ‹€.

λ¬Έμ œλŠ” MutableSequence κ°€ μ‹€μ œλ‘œ 더 μ •ν™•ν•˜κ³  insert κ°€ κ΅¬ν˜„λ˜μ§€ μ•ŠλŠ”λ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€.

0-d 배열을 μžŠμ§€ λ§ˆμ„Έμš”. μ§€κΈˆ λ‹Ήμž₯ 무슨 일이 μΌμ–΄λ‚˜λŠ”μ§€ ν™•μ‹€ν•˜μ§€ μ•Šμ§€λ§Œ μ‹€μ œλ‘œλŠ” μ‹œν€€μŠ€κ°€ β€‹β€‹μ•„λ‹™λ‹ˆλ‹€.

흠, Sequence λŠ” λΆˆλ³€ 객체λ₯Όμœ„ν•œ κ²ƒμž…λ‹ˆλ‹€. MutableSequence (extend, pop)의 일뢀 λ©”μ„œλ“œλŠ” μ˜λ―Έκ°€ μ—†μŠ΅λ‹ˆλ‹€. λ„€, μš°λ¦¬λŠ” κ·Έ μ„Έ 가지 방법을 μΆ”κ°€ ν•  수 μžˆμ§€λ§Œ μ˜³μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

random.sample μ—μ„œ Sequence μΈμŠ€ν„΄μŠ€λ₯Ό μš”κ΅¬ν•  μ΄μœ κ°€ μ „ν˜€μ—†λŠ” 것 κ°™μŠ΅λ‹ˆλ‹€.

__setitem__ 이 κ΅¬ν˜„λ˜μ—ˆμ§€λ§Œ __delitem__ __setitem__ λŠ” κ΅¬ν˜„λ˜μ§€ μ•Šμ•˜μœΌλ―€λ‘œ SomewhatMutableSequence ?

μΈν„°νŽ˜μ΄μŠ€λ₯Ό "μ‹œν€€μŠ€μ—μ΄ λͺ¨λ“  것이 μžˆμ–΄μ•Όν•˜μ§€λ§Œ μΌλΆ€λŠ”
λ”μ°ν•œ O () "κ°€ 있기 λ•Œλ¬Έμ— 일뢀 λ©”μ„œλ“œμ˜ μˆœμ§„ν•œ κ΅¬ν˜„μ„ μ œκ³΅ν•©λ‹ˆλ‹€.
ν™•μ‹€νžˆ ndarray의 λ§₯λ½μ—μ„œ λΆˆλΆ„λͺ… ν•œ 것은 insert , pop μ˜λ―Έκ°€ μ•„λ‹™λ‹ˆλ‹€.
κ·ΈλŸ¬λ‚˜ 0-d 배열에 λŒ€ν•œ 반볡과 κ΄€λ ¨ν•˜μ—¬ μ˜¬λ°”λ₯Έ 것이 무엇인지 잘 λͺ¨λ₯΄κ² μŠ΅λ‹ˆλ‹€.
λŒ€μ‹  TypeError μ˜¬λ¦¬λŠ” __iter__ λ©”μ†Œλ“œλ₯Ό μ œκ³΅ν•œλ‹€κ³  μ£Όμž₯ ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
StopIteration 은 μ–΄μ¨Œλ“  덕 타이핑 μœ„λ°˜μž…λ‹ˆλ‹€.

νŽΈμ§‘ : λΆ€μ£Όμ˜ ν•œ 결정이 μ•„λ‹ˆλΌκ³  ν™•μ‹ ν•©λ‹ˆλ‹€.

ndarrayλŠ” μ‹œν€€μŠ€ 일 수 μžˆμ§€λ§Œ λ³€κ²½ λΆˆκ°€λŠ₯ν•΄μ•Όν•œλ‹€λŠ” μ˜λ―ΈλŠ” μ•„λ‹™λ‹ˆλ‹€.

Btw. CPython λͺ©λ‘ κ΅¬ν˜„μ€ 효율적인 μ‚½μž…, 팝 및 ν™•μž₯도 μ§€μ›ν•˜μ§€ μ•Šμ§€λ§Œ μ—¬μ „νžˆ MutableSequenceμž…λ‹ˆλ‹€.

ndarrayλŠ” in-place insert / pop / extend (ndarrayλŠ” κ³ μ • 된 크기λ₯Ό 가짐)λ₯Ό 지원할 수 μ—†μœΌλ―€λ‘œ λ³€κ²½ κ°€λŠ₯ν•œ μ‹œν€€μŠ€μ΄μ§€λ§Œ λ‹¨μˆœνžˆ Python MutableSequence κ°€ μ•„λ‹™λ‹ˆλ‹€ (κ·ΈλŸ¬μ§€ μ•Šμ„ κ²ƒμž…λ‹ˆλ‹€). ν•˜μ§€λ§Œ Sequence μΈν„°νŽ˜μ΄μŠ€λ₯Ό 지원할 수 있고 μ§€μ›ν•΄μ•Όν•©λ‹ˆλ‹€.

random.sample κ°€ 이것을 ν™•μΈν•˜μ§€ μ•Šμ•˜λ‹€λ©΄ 쒋을 κ²ƒμž…λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ μžμ„Ένžˆ μ‚΄νŽ΄λ³΄λ©΄ κ·ΈλŸ΄λ“―ν•œ μ΄μœ κ°€ μžˆμŠ΅λ‹ˆλ‹€. λ‹€μ–‘ν•œ μœ ν˜•μ˜ μž…λ ₯ μΈμˆ˜μ— λŒ€ν•΄ μ—¬λŸ¬ 가지 κ΅¬ν˜„μ΄ μžˆμœΌλ―€λ‘œ μ–΄λ–€ 방법이 ν•„μš”ν•©λ‹ˆλ‹€. κ΅¬λ³„ν•˜κΈ° μœ„ν•΄. 인덱싱을 μ‹œμž‘ν•˜κ³  μ΅œμ„ μ„ λ‹€ν•  μˆ˜λŠ” μ—†μŠ΅λ‹ˆλ‹€. μ•„λ§ˆλ„ μš°λ¦¬λŠ” 버그λ₯Ό μ‹ κ³ ν•˜κ³  인식 ν•  μˆ˜μ—†λŠ” μœ ν˜•μ— λŒ€ν•΄ 기본적으둜 μ‹œν€€μŠ€ κ΅¬ν˜„μœΌλ‘œ λŒμ•„κ°€λ„λ‘ 섀득 ν•  수 μžˆμ§€λ§Œ 도움이 될 μˆ˜μžˆλŠ” κ°€μž₯ λΉ λ₯Έ 것은 3.4 ...

κ·ΈλŸ¬λ‚˜ 0-d 배열에 λŒ€ν•œ μš”μ μ€ 쒋은 κ²ƒμž…λ‹ˆλ‹€. 0-d 배열은 Sequence μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ§€μ›ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€ ( Iterable 쑰차도 μ•„λ‹™λ‹ˆλ‹€). κ·ΈλŸ¬λ‚˜ Python λͺ©μ μœΌλ‘œ Sequence 라고 거짓말을 ν•œ λ‹€μŒ μ‹€μ œ μ•‘μ„ΈμŠ€κ°€ 였λ₯˜λ₯Ό λ°œμƒμ‹œν‚¬ λ•ŒκΉŒμ§€ 기닀리면 λ„ˆλ¬΄ λ”μ°ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. 덕 타이핑은 μ›ν•˜λ©΄ 항상 μ‹€νŒ¨ ν•  수 μžˆμŒμ„ μ˜λ―Έν•©λ‹ˆλ‹€ :-). 닀차원 λ°°μ—΄μ—μ„œλŠ” isinstance(a, Sequence) μ„±κ³΅ν•˜κ³  0 차원 λ°°μ—΄μ—μ„œλŠ” μ‹€νŒ¨ ν•  수 μžˆμŠ΅λ‹ˆλ‹€. κ·Έλ ‡κ²Œ ν•  수 μžˆλ‹€λ©΄ 멋지닀. κ·ΈλŸ¬λ‚˜ μš°λ¦¬κ°€ ν•  μˆ˜μžˆλŠ” μ΅œμ„ μ˜ 방법은 μ•„λ§ˆλ„ ndarrayλ₯Ό Sequence 둜 λ§Œλ“œλŠ” κ²ƒμž…λ‹ˆλ‹€.

MaskedArrayμ—λŠ” 이미 count λ©”μ„œλ“œκ°€ μžˆμœΌλ―€λ‘œ ndarrayμ—μ„œ λ‹€λ₯Έ μž‘μ—…μ„ μˆ˜ν–‰ν•˜λŠ” λ©”μ„œλ“œλ₯Ό μΆ”κ°€ν•˜λ©΄μ΄λ₯Ό 깨뜨릴 수 μžˆμŠ΅λ‹ˆλ‹€.

0 차원 배열은 λͺ‡ 가지 νŽΈλ¦¬ν•œ λ°©λ²•μ΄μžˆλŠ” 슀칼라둜 더 잘 μƒκ°λ©λ‹ˆλ‹€ (적어도 λ‚΄κ°€ μƒκ°ν•˜λŠ” λ°©μ‹μž…λ‹ˆλ‹€). 반볡 ν•  μˆ˜μ—†λŠ” 것 외에도 색인을 생성 ν•  수 μ—†μŠ΅λ‹ˆλ‹€. λ°°μ—΄λ‘œ μƒκ°ν•˜λ©΄ 훨씬 더 μ΄μƒν•©λ‹ˆλ‹€. λ”°λΌμ„œ 0D 배열을 λ‹€λ₯Έ λ°©μ‹μœΌλ‘œ 일관성이 μ—†κ²Œ λ§Œλ“œλŠ” 것은 큰 λ¬Έμ œκ°€ μ•„λ‹™λ‹ˆλ‹€.

@njsmith μ–΄λ””μ—μ„œ μ—¬λŸ¬ κ΅¬ν˜„μ„ λ³Ό 수 μžˆμŠ΅λ‹ˆκΉŒ? isinstance (Sequence) 확인 ν›„ len(population) 되고 λͺ©λ‘μœΌλ‘œ λ³€ν™˜λ©λ‹ˆλ‹€. http://hg.python.org/cpython/file/22d891a2d533/Lib/random.py

Pandas Series 및 DataFrame μœ ν˜•μ—λŠ” ν˜Έν™˜λ˜μ§€ μ•ŠλŠ” count λ©”μ„œλ“œμ™€ 인덱슀 속성도 μžˆμŠ΅λ‹ˆλ‹€.

@rgommers : 흠, λ§žμ•„μš”, 였λ₯˜ λ©”μ‹œμ§€μ— μ˜€ν•΄λ₯Ό λ°›μ•˜μœΌλ©° range() 의 μ•½μžλ‘œ μ •μˆ˜λ₯Ό ν—ˆμš©ν•œλ‹€κ³  μƒκ°ν–ˆμ§€λ§Œ 그렇지 μ•ŠμŠ΅λ‹ˆλ‹€. κ·ΈλŸΌμ—λ„ λΆˆκ΅¬ν•˜κ³  그듀은 μ„ΈνŠΈ, μ‹œν€€μŠ€ 및 맀핑에 λŒ€ν•΄ λ‹€λ₯Έ λ™μž‘μ„ μ •μ˜ν•˜λ €κ³ ν•©λ‹ˆλ‹€. μ•„λ§ˆλ„ μš°λ¦¬λŠ” 그듀이 그것을 μ „ν™˜ν•΄μ•Όν•œλ‹€κ³  섀득 ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

if isinstance(population, _Set):
    population = tuple(population)
if isinstance(population, _Mapping):
    raise Blarrrgh()
# Otherwise assume that we have a sequence and hope

μ΄λŠ” κΈ°μ‘΄ ndarray ν•˜μœ„ ν΄λž˜μŠ€μ— λŒ€ν•œ 쒋은 μ μ΄κΈ°λ„ν•©λ‹ˆλ‹€. ndarrayκ°€ Sequence 라고 말할 μˆ˜μžˆλŠ” λ°©λ²•μ΄μ—†λŠ” κ²ƒμ²˜λŸΌ λ³΄μ΄μ§€λ§Œ ν•˜μœ„ ν΄λž˜μŠ€λŠ” 그렇지 μ•ŠμŠ΅λ‹ˆλ‹€. :-(. λ”°λΌμ„œ μ΄λŸ¬ν•œ ν•˜μœ„ 클래슀 쀑 일뢀가 Sequence μΆ©μ‘± ν•  수 μ—†λ‹€λŠ” 점을 κ°μ•ˆν•  λ•Œ μ–΄λ–€ μ˜΅μ…˜μ΄ κ°€μž₯ λ‚˜μ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. ν˜Έν™˜μ„±μ„ 깨지 μ•Šκ³ 

  • ndarray ν•˜μœ„ ν΄λž˜μŠ€μ—μ„œ ν˜Έν™˜λ˜μ§€ μ•ŠλŠ” μ‚¬μš©μ„ νκΈ°ν•˜κ³  κ²°κ΅­ μ œκ±°ν•˜κ³  Sequence ν˜Έν™˜ κ°€λŠ₯ν•œ λ²„μ „μœΌλ‘œ κ΅μ²΄ν•˜μ‹­μ‹œμ˜€. 이것은 count λ©”μ„œλ“œμ— λŒ€ν•΄ κ°€λŠ₯ν•΄ λ³΄μ΄μ§€λ§Œ Series.index 의 이름을 λ³€κ²½ν•˜λ©΄ νŒλ‹€ μ‚¬λžŒλ“€μ—κ²Œ 큰 지μž₯을 쀄 κ²ƒμž…λ‹ˆλ‹€. (DataFrame은 ndarray의 ν•˜μœ„ ν΄λž˜μŠ€κ°€ μ•„λ‹ˆλ―€λ‘œ κΈ°μˆ μ μœΌλ‘œλŠ” 관련이 μ—†μŠ΅λ‹ˆλ‹€. 단, Series와 DataFrame이 λ™κΈ°ν™”λ˜μ–΄ μžˆμ–΄μ•Όν•œλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€.) @wesm μ—κ²Œ κ·Έκ°€ μƒκ°ν•˜λŠ” λ°”λ₯Ό λ¬Όμ–΄λ³Ό 수 μžˆμ§€λ§Œ ...
  • κ³„μ†ν•΄μ„œ ndarray와 κ·Έ ν•˜μœ„ 클래슀λ₯Ό Sequence μ •μ˜λ₯Ό μΆ©μ‘±ν•˜λ„λ‘ μ„ μ–Έν•˜κ³  일뢀 ndarray ν•˜μœ„ ν΄λž˜μŠ€μ— λŒ€ν•΄ 이것이 κ±°μ§“λ§μž„μ„ λ°›μ•„λ“€μž…λ‹ˆλ‹€. ν•˜μ§€λ§Œ Sequence μΈν„°νŽ˜μ΄μŠ€μ˜ 거의 μ‚¬μš©λ˜μ§€ μ•ŠλŠ” λΆ€λΆ„μ—λ§Œ ν•΄λ‹Ήλ˜λ©° Python μœ ν˜•μ€ 일반적으둜 μ–΄μ¨Œλ“  κ±°μ§“λ§μ„ν•©λ‹ˆλ‹€ ...
  • 상속 계측 ꡬ쑰λ₯Ό λ‹€μ‹œ μ‘°μ •ν•˜μ—¬ κΈ°λŠ₯κ³Ό 좔상 기반 클래슀의 λ„Œμ„ΌμŠ€λ₯Ό λΆ„λ¦¬ν•˜μ‹­μ‹œμ˜€. ν•˜λ‹€
class multidim_ndarray(ndarray, Sequence):
  pass

λŒ€μ‹ μ΄ 클래슀의 닀차원 λ°°μ—΄ μΈμŠ€ν„΄μŠ€λ₯Ό λ§Œλ“­λ‹ˆλ‹€. ν•˜μœ„ ν΄λž˜μŠ€λŠ” multidim_ndarray μ•„λ‹ˆλΌ ndarray μ—μ„œ 계속 μƒμ†λ˜κΈ° λ•Œλ¬Έμ— 영ν–₯을받지 μ•ŠμŠ΅λ‹ˆλ‹€. λ¬Όλ‘ , 단일 ndarray κ°μ²΄λŠ” .resize() ...λ₯Ό 톡해 0-d와 닀차원 사이λ₯Ό μ „ν™˜ ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

  • ndarray 이 μ ˆλŒ€ Sequence ν•©λ‹ˆλ‹€.

[ isSequenceType 것은 μ•½κ°„ μ‚°λ§Œν•©λ‹ˆλ‹€. 이것은 좔상 κΈ°λ³Έ 클래슀 (2.6에 좔가됨)의 μ‘΄μž¬λ³΄λ‹€ μ΄μ „μ˜ 였래된 ν•¨μˆ˜μ΄λ©° μ‹œν€€μŠ€μ— ν•„μš”ν•œ μ„ΈλΆ€ μΈν„°νŽ˜μ΄μŠ€λ₯Ό ν™•μΈν•˜μ§€λ„ μ•ŠμŠ΅λ‹ˆλ‹€. μœ ν˜• (1)이 __getitem__ μ •μ˜ν•˜λŠ”μ§€ ν™•μΈν•˜κΈ° λ§Œν•˜λ©΄λ©λ‹ˆλ‹€ dict κ°€ μ•„λ‹™λ‹ˆλ‹€. λΆ„λͺ…νžˆ 이것은 λ§Žμ€ μƒν™©μ—μ„œ 잘λͺ»λœ λŒ€λ‹΅μ„ 쀄 κ²ƒμž…λ‹ˆλ‹€ (예 : dict처럼 μž‘λ™ν•˜μ§€λ§Œ ν•˜λ‚˜κ°€ μ•„λ‹Œ λͺ¨λ“  것!). λ”°λΌμ„œ μ‹€μ œλ‘œ μ‹œν€€μŠ€ μœ ν˜•μ„ μ›ν•˜λ©΄ isinstance(obj, Sequence) 이 더 λ‚˜μ€ μž‘μ—…μ„ μˆ˜ν–‰ν•˜κ³  2to3이 μ˜¬λ°”λ₯Έ μž‘μ—…μ„ μˆ˜ν–‰ν•©λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ 그것은 numpy에 문제λ₯Ό μΌμœΌν‚¨λ‹€ ...]

μ•„λ§ˆ 같은 μƒˆλ‘œμš΄ 클래슀 μƒμ„±ν•˜κΈ° μœ„ν•΄ 파이썬 μ‚¬λžŒλ“€μ„ 섀득 ν•  μˆ˜μžˆμ„ κ²ƒμž…λ‹ˆλ‹€ SequenceBase 도 μˆœμ„œ μ΄ν•˜μ΄λ©°, λ³΄μ¦ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€ .index λ˜λŠ” .count μžˆμ§€λ§Œ .__len__ 및 __getitem__ λ“±? Sequenceκ°€ index 와 같은 것을 가지고 μžˆλ‹€λŠ” 것은 λͺ¨λ‘ λ©‹μ§€μ§€λ§Œ, numpy 와 같은 것에 κ°•μ œλ‘œ μ μš©ν•˜λŠ” 것은 μ•½κ°„ μ΄μƒν•˜κ²Œ λ³΄μž…λ‹ˆλ‹€. 파이썬 μ‚¬λžŒλ“€μ€ 이것이 λ‹€μ†Œ λ¬Έμ œκ°€ μžˆμŒμ„ μ•Œκ³  μžˆμŠ΅λ‹ˆκΉŒ?

@seberg의 μ œμ•ˆμ΄ λ§ˆμŒμ— λ“­λ‹ˆλ‹€. Python κ°œλ°œμžκ°€ λ™μ˜ν•˜μ§€ μ•ŠμœΌλ©΄ @njsmith의 두 번째 κΈ€ 머리 기호둜 μ΄λ™ν•©λ‹ˆλ‹€. λˆ„λ½ 된 μ˜΅μ…˜μ€ ndarrayκ°€ Sequence μΈν„°νŽ˜μ΄μŠ€λ₯Ό λ§Œμ‘±ν•˜μ§€ μ•ŠλŠ”λ‹€κ³  λ§ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€. μ΅œμ μ€ μ•„λ‹ˆμ§€λ§Œ μ΄μ•Œ 1κ³Ό 3 imho보닀 λ‚«μŠ΅λ‹ˆλ‹€.

[μ•„μ‰½κ²Œλ„ "λˆ„λ½ 된 μ˜΅μ…˜"이 μ˜΅μ…˜ 4에 μžˆμ—ˆλŠ”λ°, 마크 λ‹€μš΄ νŒŒμ„œκ°€ ν˜Όλž€μŠ€λŸ½κ³  읽을 μˆ˜μ—†λŠ” λ°©μ‹μœΌλ‘œ 이전 κΈ€ 머리 기호둜 μ ‘μ–΄ λ„£κΈ°λ‘œ κ²°μ •ν–ˆμŠ΅λ‹ˆλ‹€. μ„œμ‹μ„ μˆ˜μ •ν•˜κΈ° μœ„ν•΄ λŒ“κΈ€μ„ μˆ˜μ •ν–ˆμŠ΅λ‹ˆλ‹€.]

Sequence 등둝 된 μœ ν˜•μ˜ 절반, 즉 buffer 및 xrange 에도 μ΄λŸ¬ν•œ λ©”μ„œλ“œκ°€ μ—†μŠ΅λ‹ˆλ‹€. collections.Sequence λ₯Ό κΈ°λ³Έ 클래슀 / λ―Ήμ‹ μœΌλ‘œ μ‚¬μš©ν•˜λŠ” μ‚¬λžŒλ“€μ„μœ„ν•œ νŽΈλ¦¬ν•œ λ©”μ„œλ“œλ§ŒνΌμ΄λ‚˜ μΈν„°νŽ˜μ΄μŠ€μ˜ ν•„μˆ˜ λ©”μ„œλ“œλΌλŠ” 것은 λΆ„λͺ…ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

@rkern : 쒋은 캐치. λ”°λΌμ„œ 해결책은 Sequence.register(np.ndarray) μ–΄λ”˜κ°€μ— ν˜ΈμΆœμ„ μΆ”κ°€ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€. (이것은 λ˜ν•œ μ›λž˜ 기자의 ν•΄κ²° λ°©λ²•μž…λ‹ˆλ‹€.)

μ–Έμ  κ°€λŠ” __reversed__ κ΅¬ν˜„ν•΄μ•Όν•©λ‹ˆλ‹€ ...

@rkern λ‹Ήμ‹  말이 λ§žμŠ΅λ‹ˆλ‹€. 이것은 PEPμ—μ„œ μ—΄λ¦° 이슈둜 μ–ΈκΈ‰λ˜μ—ˆμŠ΅λ‹ˆλ‹€ : http://www.python.org/dev/peps/pep-3119/#sequences. Final μƒνƒœμ˜ PEPλŠ” λ―Έν•΄κ²° 문제λ₯Ό κ°€μ§ˆ μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€.

이 λ²„κ·Έμ˜ 제λͺ©μ€ python3μ—μ„œλ§Œ μ‘΄μž¬ν•˜μ§€ μ•ŠκΈ° λ•Œλ¬Έμ— μ•½κ°„ μ˜€ν•΄μ˜ μ†Œμ§€κ°€ μžˆλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€. λ¬Όλ‘  random.sample(numpy_array) λŠ” python2μ—μ„œ μž‘λ™ν•˜μ§€λ§Œ isinstance(np.array([1]), collections.Sequence) λŠ” λͺ¨λ“  파이썬> = 2.6μ—μ„œ True λ₯Ό λ°˜ν™˜ν•΄μ•Όν•©λ‹ˆλ‹€.

autopep8 λͺ¨λ“ˆμ„ μ‚¬μš©ν•˜μ—¬ Python 2.7μ—μ„œμ΄ 버그가 λ°œμƒν–ˆμŠ΅λ‹ˆλ‹€. 기본적으둜 operator.isSequenceType () 호좜 쀑 일뢀λ₯Ό isinstance (x, collections.Sequence)둜 λ³€ν™˜ν–ˆμŠ΅λ‹ˆλ‹€. numpy.ndarrayλ₯Ό ν†΅κ³Όν•˜λ©΄ ν…ŒμŠ€νŠΈκ°€ Falseκ°€λ©λ‹ˆλ‹€. 이것은 맀우 κ΅ν™œν•œ 버그 일 수 μžˆμŠ΅λ‹ˆλ‹€.

python-pillow λͺ¨λ“ˆμ„ μ‚¬μš©ν•˜μ—¬ Python 2.7μ—μ„œλ„ λ°œμƒν–ˆμŠ΅λ‹ˆλ‹€. Image.point (lut, mode)λŠ” 이전 버전이 operator.isSequenceType ()을 μ‚¬μš©ν–ˆλ˜ isinstance (lut, collections.Sequence)λ₯Ό ν˜ΈμΆœν•©λ‹ˆλ‹€.

numpy 숫자 ν˜• 슀칼라 μœ ν˜•μ΄ λ“±λ‘λ˜μ—ˆμœΌλ―€λ‘œ (# 4547), 이제 이것을 λ‹€μ‹œ μ‚΄νŽ΄λ³Ό μ’‹μ€μ‹œκΈ°κ°€ 될 κ²ƒμž…λ‹ˆλ‹€.

λ”°λΌμ„œ 해결책은 μ–΄λ”˜κ°€μ— Sequence.register (np.ndarray)에 λŒ€ν•œ ν˜ΈμΆœμ„ μΆ”κ°€ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€.

λ„€, 쒋은 νƒ€ν˜‘μž…λ‹ˆλ‹€.

예, μ–΄λ”˜κ°€μ— Sequence.register(np.ndarray) λ₯Ό μΆ”κ°€ν•˜μ„Έμš”.

@mitar PR μ œμΆœμ— 관심이 μžˆμŠ΅λ‹ˆκΉŒ?

ν™•μ‹€ν•œ. μ–΄λ””λ‘œ κ°€μ•Όν•˜λ‚˜μš”? np.ndarray 이 생성 된 λ™μΌν•œ νŒŒμΌμ—μ„œ?

μš°λ¦¬κ°€ μ‹€μ œλ‘œ 이것이 쒋은 생각이라고 μƒκ°ν•˜λŠ”μ§€ ν™•μΈν•˜κΈ° μœ„ν•΄ : μš°λ¦¬λŠ” 방금 False (# 9718) 인 빈 배열에 λŒ€ν•œ μ‚¬μš© 쀑단을 μΆ”κ°€ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. 즉, μ‹œν€€μŠ€μ—μ„œ μž‘λ™ν•˜λŠ” 것 쀑 ν•˜λ‚˜λ₯Ό 제거 ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€) . 주석을 μ½μ—ˆμ§€λ§Œ 이미 결둠은 λ°°μ—΄ μŠ€μΉΌλΌκ°€ μž‘λ™ν•˜μ§€ μ•ŠλŠ”λ‹€λŠ” κ²ƒμ΄λ―€λ‘œ 빈 배열이 κ·Έ 깨진 μ•½μ†μ˜ 일뢀가 될 수 μžˆλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€ ...

λ‚˜μ€‘μ— μ°Έμ‘° ν•  수 μžˆλ„λ‘ μ μ ˆν•œ μœ„μΉ˜λŠ” numpy.core.multiarray .
https://github.com/numpy/numpy/blob/4f1541e1cb68beb3049a21cbdec6e3d30c2afbbb/numpy/core/multiarray.py

μ’‹μ•„, 이걸 원해. μ–΄λ–»κ²Œ? 이것은 λ‚΄κ°€ 그듀을 λ©”μ†Œλ“œλ‘œ κ΅¬ν˜„ν•˜λŠ” λ°©λ²•μž…λ‹ˆλ‹€.

def __reversed__(self):
    return iter(self[::-1])

def index(self, value) -> int:
    return np.in1d(self, value).nonzero()[0]

def count(self, value) -> int:
    return (self == value).sum()

# Necessary due to lack of __subclasshook__
collections.abc.register(np.ndarray)

μ΅œμ‹  λ²„μ „μ˜ Tensorflow (2.0)μ—μ„œ Sequence.register(np.ndarray) κ°€ 있으면 Tensorflowκ°€ μ˜€μž‘λ™ν•˜λŠ” 것을 λ°œκ²¬ν–ˆμŠ΅λ‹ˆλ‹€. 값이 μ‹œν€€μŠ€μΈμ§€ μ–΄λ”˜κ°€μ—μ„œ ν™•μΈν•˜κ³  μ‚¬μš©ν•˜λŠ” 것이 ndarray인지 여뢀와 λ‹€λ₯Έ 것 κ°™μŠ΅λ‹ˆλ‹€.

μ°Έμ‘° : https://gitlab.com/datadrivendiscovery/d3m/issues/426

재밌 λ„€μš”. λ‚˜λŠ” 무언가가 배열인지 ν…ŒμŠ€νŠΈν•˜λŠ” 것이 더 λ‚˜μ€ 생각이라고 ν™•μ‹ ν•©λ‹ˆλ‹€. 거의 항상 νŠΉμˆ˜ν•˜κ²Œ μ²˜λ¦¬λ˜λŠ” 경우이기 λ•Œλ¬Έμž…λ‹ˆλ‹€.

μ•„λ§ˆλ„ μœ ν˜• κ²€μ‚¬μ˜ μˆœμ„œκ°€ 잘λͺ»λ˜μ—ˆμ„ κ²ƒμž…λ‹ˆλ‹€. λ¨Όμ € ndarrayλ₯Ό 검사 ν•œ λ‹€μŒ μˆœμ„œλ₯Ό κ²€μ‚¬ν•΄μ•Όν•©λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ λ¨Όμ € μ‹œν€€μŠ€λ₯Ό ν™•μΈν•˜λ©΄ 이제 ν•΄λ‹Ή μ½”λ“œ 블둝이 μ‹€ν–‰λ©λ‹ˆλ‹€.

@mitar μš°λ¦¬λŠ” __contains__ / operator.in 이 λ‹€λ₯΄κ²Œ λ™μž‘ν•˜κΈ° λ•Œλ¬Έμ— (반볡되며 μ‹œν€€μŠ€κ°€ β€‹β€‹μ•„λ‹˜) API 계약을 μœ„λ°˜ν•˜λ―€λ‘œμ΄λ₯Ό λ‹«λŠ” 것을 κ³ λ €ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. 이것에 λŒ€ν•œ 유슀 μΌ€μ΄μŠ€κ°€ μžˆμŠ΅λ‹ˆκΉŒ?

μ—¬κΈ°μ—μ„œ μ—Όλ‘μ—λ‘κ³ μžˆλŠ” API 계약에 λŒ€ν•΄ μžμ„Ένžˆ μ„€λͺ…ν•΄ μ£Όμ‹œκ² μŠ΅λ‹ˆκΉŒ? μ •ν™•νžˆ μ΄ν•΄ν•˜μ§€ λͺ»ν•©λ‹ˆλ‹€.

μ‚¬μš© μ‚¬λ‘€λŠ” μ‹œν€€μŠ€λ₯Ό λ°˜λ³΅ν•˜κ³  μ°¨μ›λ³„λ‘œ 차원을 되 돌린 λ‹€μŒ μž¬κ·€ν•˜λŠ” 것과 같이 사물간에 λ³€ν™˜ν•˜λŠ” 방법을 μ•Œκ³ μžˆλŠ” 일반 μ½”λ“œλ₯Ό μž‘μ„±ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€. 그런 λ‹€μŒ 2d ndarray와 λ™μΌν•œ λ°©μ‹μœΌλ‘œ λͺ©λ‘ λͺ©λ‘μ„ λ³€ν™˜ ν•  수 μžˆμ§€λ§Œ μ—¬λŸ¬ 차원 λ“±μœΌλ‘œ μΌλ°˜ν™” ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 그리고 λ‚˜λŠ” 그것이 μ‹œν€€μŠ€μΈμ§€ ν™•μΈν•˜λŠ” 것 이상을 확인할 ν•„μš”κ°€ μ—†μŠ΅λ‹ˆλ‹€.

μ–ΈκΈ‰ν–ˆλ“―μ΄ 배열을 쀑첩 된 파이썬 μ‹œν€€μŠ€λ‘œ λ³΄λŠ” 데 λͺ‡ 가지 λ¬Έμ œκ°€ μžˆμŠ΅λ‹ˆλ‹€. __contains__ λŠ” κ°€μž₯ λͺ…λ°±ν•œ 것이고 λ‹€λ₯Έ ν•˜λ‚˜λŠ” 0-D 배열이 ν™•μ‹€νžˆ 쀑첩 된 μ‹œν€€μŠ€κ°€ β€‹β€‹μ•„λ‹ˆλΌλŠ” κ²ƒμž…λ‹ˆλ‹€. λ˜ν•œ 길이 0 차원과 같은 λ―Έλ¬˜ν•¨μ΄ μ‘΄μž¬ν•˜λ©° 일반적으둜 arr[0] = 0 λŠ” arr[0] == 0 μ˜λ―Έν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. arr[0] λŠ” μž„μ˜μ˜ λ°°μ—΄ 자체 일 수 있기 λ•Œλ¬Έμž…λ‹ˆλ‹€. arr[0, ...] 개인적으둜 "쀑첩 된 μ‹œν€€μŠ€"해석은 μ’‹μ§€λ§Œ μš°λ¦¬κ°€ μƒκ°ν•˜λŠ” 것보닀 덜 μœ μš©ν•˜λ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€. (즉, 배열을 for col in array 둜 거의 λ°˜λ³΅ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. for col in array.iter(axis=0)

κ·Έλž˜μ„œ λ‚˜λŠ” "배열은 μ‹œν€€μŠ€ λ‹€"λ₯Ό μ•½κ°„ λ¬Έμ œκ°€μžˆλŠ” λΉ„μœ λ‘œ λ³΄λŠ” κ²½ν–₯이 μžˆμŠ΅λ‹ˆλ‹€ (이것이 유용 ν•  수 μ—†λ‹€λŠ” 것을 μ˜λ―Έν•˜μ§€λŠ” μ•ŠμŠ΅λ‹ˆλ‹€ , μΈμ •ν•©λ‹ˆλ‹€).
κ·ΈλŸ¬λ‚˜ μ‚¬μš© 사둀가 무엇이든, μƒˆλ‘œμš΄ "ElementwiseContainer"와 같은 μƒˆλ‘œμš΄ ABCλ₯Ό νƒμƒ‰ν•˜λŠ” 것이 더 낫지 μ•Šμ„μ§€ κΆκΈˆν•©λ‹ˆλ‹€. λ˜ν•œ μ‚¬μš©μžμ—κ²Œ + 및 == 등이 각 μš”μ†Œ μ—μ„œ μž‘λ™ ν•  것이며 Python μ‹œν€€μŠ€μ™€ 달리 + κ°€ 연결될 κ²ƒμœΌλ‘œ κΈ° λŒ€ν•΄μ„œλŠ” μ•ˆλœλ‹€κ³  μ•Œλ €μ£ΌλŠ” κ²ƒμž…λ‹ˆλ‹€ ( 예 + λŠ” μ‹œν€€μŠ€ ABC의 일뢀가 μ•„λ‹ˆμ§€λ§Œ Pythonμ—μ„œλŠ” μžμ—°μŠ€λŸ½κ²Œ λŠκ»΄μ§‘λ‹ˆλ‹€.)

κ·Έλƒ₯ μ§€λ‚˜κ°€ λ‹€-
λ‚˜λŠ” Python의 collections.abc.Sequence κ°€ __eq__ 및 기타 비ꡐλ₯Ό κ΅¬ν˜„ν•˜μ§€ μ•ŠλŠ”λ‹€λŠ” 점을 μ§€μ ν–ˆκΈ° λ•Œλ¬Έμ— μ§€λ‚œμ£Όμ— Python-ideas에 μΌμŠ΅λ‹ˆλ‹€

λ‚˜λŠ” 거기에 __eq__ μΆ”κ°€ ν•  것을 μ œμ•ˆν–ˆμ§€λ§Œ, λΆ„λͺ…νžˆ Numpy.array의 λ™μž‘κ³ΌλŠ” κ·Έ μ‹œν€€μŠ€κ°€ β€‹β€‹λ‹¬λΌμ§€κ²Œ λ§Œλ“€ κ²ƒμž…λ‹ˆλ‹€.

νŒŒμ΄μ¬μ—μ„œ "μ‹œν€€μŠ€"κ°€ 무엇인지 더 곡식화 ν•œ λ‹€μŒ νŠΉμˆ˜ν•œ 경우둜 λ°œμ‚°λ˜λŠ” μ΄λŸ¬ν•œ 것듀을 μœ„μž„ν•˜μ—¬ collections.abc.ComparableSequence λ₯Ό μΆ”κ°€ν•˜λŠ” 것은 μ–΄λ–»μŠ΅λ‹ˆκΉŒ? (그리고 cancatenation에 λŒ€ν•œ + κ°€ μœ„μ—μ„œ μ–ΈκΈ‰ λ˜μ—ˆκΈ° λ•Œλ¬Έμ— "비ꡐ κ²°κ³Ό 단일 λΆ€μšΈμ„ μƒμ„±ν•˜κ³  μ—°κ²°μ„μœ„ν•œ 슀칼라둜 μž‘λ™ν•˜κ³  슀칼라λ₯Ό κ³±ν•˜λŠ” μ‹œν€€μŠ€"λ₯Ό μ•”μ‹œν•˜λŠ” λ‹€λ₯Έ μ΄λ¦„μ΄μžˆμ„ 수 μžˆμŠ΅λ‹ˆλ‹€. 즉-Python λ™μž‘ + 및 * 의 경우 λͺ©λ‘ 및 νŠœν”Œ). λ”°λΌμ„œ Sequence의 사양은 적어도 1D numpy 배열이 μ •ν™•νžˆ μΌμΉ˜ν•˜λŠ” λ°©μ‹μœΌλ‘œ ν˜•μ‹ν™” 될 수 μžˆμŠ΅λ‹ˆλ‹€.

Python μ‹œν€€μŠ€μ— λŒ€ν•œμ΄ ν˜•μ‹ν™”λŠ” μœ„μ˜ https://github.com/numpy/numpy/issues/2776#issuecomment -330865166μ—μ„œ μ–ΈκΈ‰ ν•œ 것과 같은 λ‹€λ₯Έ 뢄기에도 도움이 될 수 μžˆμŠ΅λ‹ˆλ‹€.

λ‚˜λŠ” κ·Έ 길을 ν˜Όμžμ„œ λ‚΄λ €κ°€λŠ” 것에 λŒ€ν•œ μΆ©λΆ„ν•œ 동기λ₯Ό λŠλΌμ§€ μ•Šμ§€λ§Œ, 이것이 μ˜λ―Έκ°€ μžˆλ‹€λ©΄, λ‚˜λŠ” 기꺼이 PEP μž‘μ„±μ„ 돕고 그것을 λ°€μ–΄λ‚΄λŠ” 것을 λ„μšΈ κ²ƒμž…λ‹ˆλ‹€. (λ‚˜λŠ” μ™œ μ‹œν€€μŠ€κ°€ __eq__ λ§Œλ“€μ§€ μ•Šμ•˜λŠ”μ§€ ν™•μΈν•˜κ³  μ‹Άμ—ˆκ³  μ•„λ§ˆλ„ 이것을 κ°€μ Έμ˜¬ λ•Œ PRμ΄μžˆμ„ 수 μžˆμŠ΅λ‹ˆλ‹€)

@jsbueno λ‚΄ λ¬Έμ œλŠ” λ‚΄κ°€ μ‹€μ œλ‘œ ndarray μ‚¬μš©μžμ—κ²Œ 도움이 될 μΆ”κ°€ λ˜λŠ” μ •μ˜ 사이에 μ–΄λ–€ 것이 μžˆλŠ”μ§€ μ‹€μ œλ‘œ μ•Œμ§€ λͺ»ν•œλ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€. λ‚΄κ°€ 생각할 μˆ˜μžˆλŠ” μ΅œμ„ μ˜ 방법은 count() 및 index() κ°€μžˆλŠ” Collection μ΄μ§€λ§Œ μœ μš©ν• κΉŒμš”? λ‹€λ₯Έ 것은 파이썬 μžμ²΄κ°€ κ°œλ…μ΄ 거의 λ˜λŠ” μ „ν˜€μ—†λŠ” 것에 λŒ€ν•œ ABCκ°€ 될 κ²ƒμž…λ‹ˆλ‹€.

SymPyκ°€ μ‹€μ œλ‘œ 더 μ˜³λ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€. ν–‰λ ¬μ˜ λͺ¨λ“  μš”μ†Œλ₯Ό β€‹β€‹λ°˜λ³΅ν•˜λ―€λ‘œ 적어도 Collection λ©λ‹ˆλ‹€.
이제 μš°λ¦¬κ°€ 그것에 λŒ€ν•΄ λ§Žμ€ 것을 ν•  수 μžˆμ„μ§€ μ˜μ‹¬μŠ€λŸ½κ³  λͺ¨λ“  μš”μ†Œμ˜ SymPy 반볡이 맀우 μœ μš©ν•˜κ³  직관적인지 ν™•μ‹  ν•  수 μ—†μ§€λ§Œ μ΅œμ†Œν•œ λͺ¨λ“  μš”μ†Œμ˜ 반볡이 __contains__ 와 μΌμΉ˜ν•©λ‹ˆλ‹€. 이것은 λ˜ν•œ len(Matrix) κ°€ μš”μ†Œμ˜ 수이고 _not_ Matrix.shape[0] μž„μ„ μ˜λ―Έν•©λ‹ˆλ‹€!

1 차원 배열을 μ œμ™Έν•˜κ³  μœ„μ—μ„œ 많이 반볡 ν•  μœ„ν—˜μ΄μžˆλŠ” 경우 numpy 배열은 λ¬΄μ—‡μž…λ‹ˆκΉŒ? :

  • Container : μš”μ†Œ 쀑 : heavy_check_mark :
  • Sized + Iterable ν•˜μœ„ λ°°μ—΄ (1-Dκ°€ μ•„λ‹Œ 경우) : 질문 :
  • Reversible : κ΅¬ν˜„ν•  수 μžˆμŠ΅λ‹ˆλ‹€. κ±±μ •ν•  ν•„μš”κ°€ μ—†μŠ΅λ‹ˆλ‹€. :질문:
  • count() 및 index() : μš”μ†Œμ— λŒ€ν•΄ κ΅¬ν˜„ κ°€λŠ₯ (: heavy_check_mark :)
  • Sequence : ν•˜μœ„ λ°°μ—΄ 반볡 κ°€λŠ₯κ³Ό μš”μ†Œ μ»¨ν…Œμ΄λ„ˆ κ°„μ˜ 뢈일치 : x :

λ”°λΌμ„œ κ°€μž₯ 기본적인 속성 쀑 일뢀쑰차도 μΆ©λŒν•©λ‹ˆλ‹€. NumPyμ™€λŠ” 될 μˆ˜μžˆλŠ” Container μˆ˜ν–‰ν•˜λŠ” 방법을 μ•Œκ³ μžˆλŠ” .index() 및 .count() , 즉 Sequence κ·ΈλŸ¬λ‚˜μ—†μ΄ Iterable μΌλΆ€μž…λ‹ˆλ‹€. 독립적 으둜 Iterable μ΄μ§€λ§Œ ν•˜μœ„ λ°°μ—΄ μž…λ‹ˆλ‹€.
그리고 그것이 ν˜Όλž€μŠ€λŸ¬μ›Œ 보이면 λ™μ˜ν•˜μ§€λ§Œ μ˜λ„μ μœΌλ‘œ μƒκ°ν•©λ‹ˆλ‹€. μœ μΌν•œ μ§„μ •ν•œ 해결책은 SymPy 경둜둜 μ΄λ™ν•˜κ±°λ‚˜ μ‹œμž‘ν•˜λŠ” 데 Iterable κ°€ μ•„λ‹Œ κ²ƒμž…λ‹ˆλ‹€. (μš°λ¦¬λŠ” SymPy 경둜둜 갈 수 μ—†μœΌλ©°, __iter__ 더 이상 μ‚¬μš©ν•˜μ§€ μ•Šμ„ κ°€λŠ₯성이 μžˆμŠ΅λ‹ˆλ‹€.)

개인적으둜, 1D 배열은 μ œμ³λ‘κ³  λ°°μ—΄κ³Ό μœ μ‚¬ν•œ 것은 Python μ»¬λ ‰μ…˜κ³Ό 비ꡐ할 λ•Œ 맀우 λ‹€λ₯Έ μ§μŠΉμ΄λΌλŠ” κ²ƒμž…λ‹ˆλ‹€. 반볡 λ™μž‘μ„ κ³ λ €ν•  λ•Œ __contains__ 와 __iter__ μ‚¬μ΄μ˜ 뢈일치λ₯Ό ꡬ체적으둜 μ•Œλ¦¬κΈ° μœ„ν•΄ MultidimensionalCollection κ°€ ν•„μš”ν•©λ‹ˆλ‹€ (ν•˜μ§€λ§Œ μœ μš©ν•©λ‹ˆκΉŒ?).

ν˜„μž¬ Sequence μ •μ˜ 된 것 이상을 μ‚΄νŽ΄λ³΄λ©΄ ElementwiseCollection (μ—°μ‚°μžλŠ” μ»¨ν…Œμ΄λ„ˆ μ—°μ‚°μžκ°€ μ•„λ‹Œ μš”μ†Œ 별 μ—°μ‚°μž, 예 : + )κ°€ κ°€μž₯ λ§Žλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€. 일반적으둜 numpy λ°°μ—΄ 및 λͺ¨λ“  λ°°μ—΄ μœ μ‚¬ νŠΉμ„± μ •μ˜ (λ°°μ—΄ ν”„λ‘œκ·Έλž˜λ° μ°Έμ‘°). κ·ΈλŸ¬λ‚˜ 그것은 λ˜ν•œ 파이썬 μžμ²΄μ™€ μ™„μ „νžˆ λ‚―μ„€κ³  λ•Œλ‘œλŠ” μƒμΆ©λ˜λŠ” κ°œλ…μ΄κΈ°λ„ν•©λ‹ˆλ‹€.

μœ μΌν•œ 것은 ν•˜μœ„ λ°°μ—΄ λŒ€ μš”μ†Œμ˜ λΆˆμΌμΉ˜κ°€ μ—†κΈ° λ•Œλ¬Έμ— 1 차원 λ°°μ—΄κ³Ό 1 차원 λ°°μ—΄ 만 μ‹œν€€μŠ€λ‘œ ν‘œμ‹œν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€. κ·Έ μ‹œμ μ—μ„œ 예, __eq__ λŠ” λ¬Όλ‘  그듀에 λŒ€ν•΄ μ •μ˜λ˜μ§€ μ•Šμ•˜μœΌλ©° __nonzero__ λŠ” 일반적인 파이썬 μ‹œν€€μŠ€μ™€ μœ μ‚¬ν•˜κ²Œ μ •μ˜λ˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€.

λ‹΅λ³€ ν•΄μ£Όμ…”μ„œ 감사 λ“œλ¦¬λ©°, μ—¬κΈ°μ—μ„œ 8 λ…„λœ λ§ˆμ°¨μ— νƒ€μ„œ λ‹€μ‹œ ν•œ 번 μ‚¬κ³Όλ“œλ¦½λ‹ˆλ‹€. κ·€ν•˜μ˜ 의견으둜, λ§ˆμ§€λ§‰ μ „μž 메일 κ΅ν™˜ ν›„ λͺ‡ μ‹œκ°„ ν›„ 쀑간에 λ‹€λ₯Έ μΉœκ΅¬μ™€ μ±„νŒ…μ„ν•˜λ©΄μ„œ μ΄λŸ¬ν•œ λŒ€λΆ€λΆ„μ€ κ·ΈλŒ€λ‘œ λ‘λŠ” 것이 μ’‹μŠ΅λ‹ˆλ‹€. μ–Έμ  κ°€ νŒŒμ΄μ¬μ€ "collections.abc.Sequenceκ°€ μ§€κΈˆ κ΅¬ν˜„ν•˜λŠ” 것"보닀 더 곡식적인 Sequence μ •μ˜λ₯Ό 선택할 수 μžˆμŠ΅λ‹ˆλ‹€.

μœ„μ˜ μ˜κ²¬μ„ 읽은 ν›„ "파이썬 μ‹œν€€μŠ€λ₯Ό λ§Œλ“œλŠ” 것"으둜 λ‚˜μ—΄ν•œ νŠΉμ„±μ—λŠ” ndarrayλ₯Ό λͺ©λ‘ 및 νŠœν”Œκ³Ό 같은 μ‹œν€€μŠ€μ™€ μœ μ‚¬ν•˜κ²Œ λ§Œλ“œλŠ” κ°€μž₯ μ€‘μš”ν•œ κΈ°λŠ₯이 λΆ€μ‘±ν•˜λ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€. λͺ¨λ“  κ°œλ³„ μš”μ†Œλ₯Ό 처리 ν•  μˆ˜μžˆλŠ” κ³΅κ°„μž…λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ λ‚˜λŠ” 그것을 μœ„ν•΄ abcλ₯Ό κ³΅μ‹ν™”ν•˜λŠ” 것이 μ½”λ”©μ΄λ‚˜ 정적 μœ ν˜• νžŒνŒ…μ—μ„œ μ‹€μš©μ μΈ κ°€μΉ˜κ°€ μžˆλ‹€κ³  μƒκ°ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

@seberg λŒ€λ‹¨ν•œ μ‹œλ†‰μ‹œμŠ€μž…λ‹ˆλ‹€.

이 λ¬Έμ œλŠ” Sequence λ˜λŠ” Iterable λ˜λŠ” Container λ₯Ό μ˜ˆμƒν•˜λŠ” μ»¨ν…μŠ€νŠΈμ—μ„œ ndarray μ‚¬μš©μ— κ΄€ν•œ κ²ƒμœΌλ‘œ λ³΄μž…λ‹ˆλ‹€. κ°„λ‹¨ν•œ μ ‘κ·Ό 방식은 μ μ ˆν•œ μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ•½μ†ν•˜κ³  μ œκ³΅ν•˜κ³  isinstance 검사에 μ‘λ‹΅ν•˜λŠ” μ €λ ΄ν•œλ³΄κΈ°λ₯Ό μ œκ³΅ν•˜λŠ” ndarray 에 νšŒμ›μ„ λ‘λŠ” κ²ƒμž…λ‹ˆλ‹€. 예λ₯Ό λ“€λ©΄ :

class ndarray(Generic[T]):
    def as_container(self) -> Container[T]:
        if self.ndim == 0:
            raise ValueError
        return ContainerView(self)  # correctly answers __len__, __iter__ etc.
    def as_subarray_iterable(self) -> Iterable[np.ndarray[T]]:
        if self.ndim <= 1:
            raise ValueError
        return SubarrayIterableView(self)
    def as_scalar_sequence(self) -> Sequence[T]:
        if self.ndim != 1:
            raise ValueError
        return ScalarView(self)
    def as_subarray_sequence(self) -> Sequence[np.ndarray[T]]:
        if self.ndim <= 1:
            raise ValueError
        return SubarraySequenceView(self)  # this view has to reinterpret __contains__ to do the expected thing.

λͺ¨λ“  μ‚¬λžŒμ—κ²Œ λͺ¨λ“  것을 μ œκ³΅ν•˜κ² λ‹€κ³  μ•½μ†ν•˜λŠ” ndarray λŒ€μ‹  μ‚¬μš©μžλŠ” κ·Έλ…€μ—κ²Œ ν•„μš”ν•œ 것을 μš”μ²­ν•˜κ³  ndarray 제곡 ν•  수 μžˆλ‹€λ©΄ κ°€λŠ₯ν•œ κ°€μž₯ μ €λ ΄ν•œ λ°©λ²•μœΌλ‘œ μ œκ³΅ν•©λ‹ˆλ‹€. ν•  수 μ—†μœΌλ©΄ μ˜ˆμ™Έκ°€ λ°œμƒν•©λ‹ˆλ‹€. μ΄λ ‡κ²Œν•˜λ©΄ μ‚¬μš©μžκ°€ μˆ˜ν–‰ν•΄μ•Όν•˜λŠ” ndim 검사 (특히 μœ ν˜• 주석을 μ‚¬μš©ν•  λ•Œ)λ₯Ό ndarray 둜 μ΄λ™ν•˜μ—¬ μ‚¬μš©μž μ½”λ“œλ₯Ό λ‹¨μˆœν™”ν•©λ‹ˆλ‹€.

λ§ˆμ§€λ§‰ 주석이 Sequence μ•„λ‹ˆλΌ Iterable Sequence μ΄μ–΄μ•Όν•©λ‹ˆκΉŒ?

@ eric-wieser 응! 감사. λ‹Ήμ‹ μ˜ 생각은 λ¬΄μ—‡μž…λ‹ˆκΉŒ?

음, as_subarray_sequence λŠ” 거의 list(arr) :)

@ eric-wieser 예,보기λ₯Ό μ œκ³΅ν•˜λŠ” 것이 더 μ €λ ΄ν•  것이라고 μƒκ°ν–ˆμ§€λ§Œ λͺ¨λ₯΄κ² μŠ΅λ‹ˆλ‹€.

음, list(arr) λŠ” len(arr) λ·°λ₯Ό μƒμ„±ν•©λ‹ˆλ‹€.이 λ·°λ₯Ό λ°˜λ³΅ν•˜λ©΄ μ–΄μ¨Œλ“  μƒμ„±ν•˜κ²Œλ©λ‹ˆλ‹€.

λ‚˜λŠ” 아직도 μš°λ¦¬κ°€ ν•  μˆ˜μžˆλŠ” 일에 λ„ˆλ¬΄ λ§Žμ€ μ΄ˆμ μ„ λ§žμΆ”κ³  있고 ν˜„μž¬ λ¬Έμ œμ— λŒ€ν•΄μ„œλŠ” μΆ©λΆ„ν•˜μ§€ μ•Šλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€. 특히, μœ„μ—μ„œ 제곡 ν•œ λͺ¨λ“  방법은 ndarray와 μœ μ‚¬ν•œ 것을 μ•Œκ³  μžˆλ‹€λ©΄ κ΅¬ν˜„ν•˜κΈ°κ°€ 맀우 μ‰½μŠ΅λ‹ˆλ‹€ (0-D 배열이 μ»¨ν…Œμ΄λ„ˆκ°€ μ•„λ‹ˆλΌλŠ” 데 λ™μ˜ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€). λ”°λΌμ„œ ν‘œμ€€ν™” 된 ABCκ°€μžˆλŠ” κ²½μš°μ—λ§Œ μœ μš©ν•˜λ©°,이 경우 κΈ°λ³Έ 인덱싱이 numpy ν˜Έν™˜ κ°€λŠ₯ν•˜κ³  .flat 속성을 포함 ν•  수 μžˆμŒμ„ μ •μ˜ν•˜λŠ” κ²ƒμœΌλ‘œλ„ μΆ©λΆ„ν•©λ‹ˆλ‹€.

μ›λž˜ 문제 ( random.sample μž‘λ™μ΄ 쀑지됨)λŠ” μ‹œκ°„μ΄ 지남에 따라 μƒλ‹Ήνžˆ 관련성이 μ—†μ–΄ λ³΄μž…λ‹ˆλ‹€. 예, μ•½κ°„ μ„±κ°€ μ‹œμ§€λ§Œ μ‚¬μš©μžκ°€ ν•˜μœ„ λ°°μ—΄ μ΄λ‚˜ μš”μ†Œκ°€ μ„ νƒλ˜κΈ°λ₯Ό κΈ°λŒ€ν•  수 있기 λ•Œλ¬Έμ— 더 쒋을 μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€.

λ‚˜λŠ” 우리 κ°€ 였리 타이핑 μ½”λ“œλ₯Ό κΉ° 것이라고 ν™•μ‹ ν•©λ‹ˆλ‹€. μ§λ ¬ν™”μ—μ„œ 일뢀 λ¬Έμ œκ°€ λ°œμƒν•  수 μžˆμŠ΅λ‹ˆλ‹€ (μ˜ˆμ œκ°€ μ—†μŠ΅λ‹ˆλ‹€). 그리고 κ·ΈλŸ¬ν•œ μ½”λ“œμ˜ λŒ€λΆ€λΆ„μ€ ABC sμ—μ„œ isinstance 검사λ₯Ό μ‚¬μš©ν•˜λŠ” 데 λ¬Έμ œκ°€ μ—†μ§€λ§Œ np.ndarray ꡬ체적으둜 ν™•μΈν•˜λŠ” 것은 μ‹«μ–΄ν•©λ‹ˆλ‹€. ndarray에 λ©”μ„œλ“œλ₯Ό μΆ”κ°€ν•˜λŠ” 것이 μ–΄λ–»κ²Œ λ„μ›€μ΄λ˜λŠ”μ§€ λͺ¨λ₯΄κ² μŠ΅λ‹ˆλ‹€. .ndim 속성보닀 μ•½κ°„ 더 많고 쀑첩 μ‹œν€€μŠ€ μŠ€νƒ€μΌ λ°˜λ³΅μ„ 숨길 μˆ˜μžˆλŠ” μƒˆλ‘œμš΄ ABC 이 ν•„μš”ν•©λ‹ˆλ‹€.

μœ„μ™€ 같은 방법은 μ–΄λ–€ 배열과도 μž‘λ™ν•˜λŠ” μ†ŒλΉ„μž ν”„λ‘œν† μ½œλ‘œμ„œ 합리적 일 수 μžˆμ§€λ§Œ, μš°λ¦¬κ°€ ν•΄κ²°ν•˜λ €λŠ” λ¬Έμ œλŠ” λ¬΄μ—‡μž…λ‹ˆκΉŒ :)? 일반적인 파이썬 μ‹œν€€μŠ€κ°€ β€‹β€‹λ…ΈμΆœν•˜κ³  싢은 κ²ƒκ³ΌλŠ” λ‹€λ₯Έ 것 κ°™μŠ΅λ‹ˆλ‹€.

@ eric-wieser

λ¬Όλ‘  λ§žμ§€λ§Œ 전체 μ‹œν€€μŠ€λ₯Ό 반볡 ν•  μˆ˜λŠ” μ—†μŠ΅λ‹ˆλ‹€. λͺ‡ 가지 μš”μ†Œ 만 선택할 수 μžˆμŠ΅λ‹ˆλ‹€.

@seberg

λ‚˜λŠ” 아직도 μš°λ¦¬κ°€ ν•  μˆ˜μžˆλŠ” 일에 λ„ˆλ¬΄ λ§Žμ€ μ΄ˆμ μ„ λ§žμΆ”κ³  있고 ν˜„μž¬ λ¬Έμ œμ— λŒ€ν•΄μ„œλŠ” μΆ©λΆ„ν•˜μ§€ μ•Šλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€.

λ™μ˜ν•©λ‹ˆλ‹€. μ–΄λ–€ μ’…λ₯˜μ˜ 문제λ₯Ό μƒμƒν•˜κ³  μžˆμŠ΅λ‹ˆκΉŒ? numpy 1.10이 μœ ν˜•κ³Ό ν•¨κ»˜ λ‚˜μ˜¬ λ•Œ λ•Œλ•Œλ‘œ 1 차원 numpy 배열을 μ‹œν€€μŠ€λ‘œ μ‚¬μš©ν•˜κ³  싢을 것이라고 μƒμƒν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. ν˜„μž¬ κ·Έλ ‡κ²Œν•˜λ €λ©΄ λ‹€μŒμ„ μˆ˜ν–‰ν•΄μ•Όν•©λ‹ˆλ‹€.

  • 1 차원인지 ν™•μΈν•˜κ³ 
  • cast λ₯Ό ν˜ΈμΆœν•˜μ—¬ mypyμ—κ²Œ μ‹€μ œλ‘œ μ‹œν€€μŠ€μž„μ„ μ•Œλ¦½λ‹ˆλ‹€.

κ·Έλž˜μ„œ μžλ™μœΌλ‘œ μˆ˜ν–‰ν•˜λŠ” 방법을 μ œκ³΅ν•˜κ³  μ‹ΆμŠ΅λ‹ˆλ‹€. λ‚˜λŠ” 큰 μΈν„°νŽ˜μ΄μŠ€λ„ μ‹«μ–΄ν•˜μ§€λ§Œ, νƒ€μž… μ–΄λ…Έν…Œμ΄μ…˜μ΄ 따라 작으면 μ„œ 이런 μ’…λ₯˜μ˜ λ©”μ†Œλ“œ λ‚˜ λ² μ–΄ ν•¨μˆ˜κ°€ 점점 더 널리 퍼질 것 κ°™λ‹€. μ–΄λ–»κ²Œ 생각해?

(0-D 배열이 μ»¨ν…Œμ΄λ„ˆκ°€ μ•„λ‹ˆλΌλŠ” 데 λ™μ˜ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€).

잘 λͺ¨λ₯΄κ² μ§€λ§Œ ν˜„μž¬ __len__ 에 λͺ¨κΈˆν•˜κ³  μžˆμœΌλ―€λ‘œ μ»¨ν…Œμ΄λ„ˆμ²˜λŸΌ μž‘λ™ν•˜μ§€ μ•ŠλŠ” 것 κ°™μŠ΅λ‹ˆλ‹€. μ»¨ν…Œμ΄λ„ˆλ₯Ό λ°›μ•„λ“€μ΄λŠ” ν•¨μˆ˜μ— 0D 배열을 μ „λ‹¬ν•˜λ©΄ mypyκ°€ 였λ₯˜λ₯Όλ³΄κ³ ν•˜λŠ” 것이 도움이 될 것이라고 μƒκ°ν•©λ‹ˆλ‹€. 0D λ°°μ—΄ μ»¨ν…Œμ΄λ„ˆλ₯Ό λ§Œλ“€λ©΄ μž‘νžˆμ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

.ndim 속성보닀 μ•½κ°„ 더 많고 쀑첩 μ‹œν€€μŠ€ μŠ€νƒ€μΌ λ°˜λ³΅μ„ 포함 ν•  μˆ˜μžˆλŠ” μƒˆ ABCκ°€ ν•„μš”ν•©λ‹ˆλ‹€.

λ‚˜λŠ” 그것을 λ‚΄ μ œμ•ˆμ— μΆ”κ°€ν•˜κ³  싢지 μ•Šμ•˜μ§€λ§Œ μ–΄μ¨Œλ“  당신이 κ°€κ³ μžˆλŠ” 곳이라고 μƒκ°ν•©λ‹ˆλ‹€. μ €λŠ” ν›Œλ₯­ν•˜κ²Œ λ””μžμΈ 된 JAX 라이브러리의 μ—΄λ ¬ν•œ μ‚¬μš©μžμž…λ‹ˆλ‹€. λ‚˜λŠ” λ―Έλž˜μ— numpy.ndarray 와 jax.numpy.ndarray (μ„œλΈŒ 클래슀λ₯Ό 가지고 있음)κ°€ μ–΄λ–€ μ’…λ₯˜μ˜ 좔상적 인 NDArray μ—μ„œ 상속 될 것이라고 μƒμƒν•©λ‹ˆλ‹€. ndim 이상을 κ°€μ§ˆ 수 μžˆμŠ΅λ‹ˆλ‹€. μ΄μƒμ μœΌλ‘œλŠ” 적어도 NDArray(Generic[T]) 이고 이벀트의 λͺ¨μ–‘μ΄λ‚˜ ν¬κΈ°λ„μžˆμ„ 수 μžˆμŠ΅λ‹ˆλ‹€. __eq__ NDArray[np.bool_] λ°˜ν™˜ ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 당신은 μ•„λ§ˆ λ‚˜λ³΄λ‹€ 더 잘 μ•Œκ³  μžˆμŠ΅λ‹ˆλ‹€ :)

λͺ‡ λ…„ μ „, numpy.array 이 collections.Sequence μ—μ„œ μƒμ†λ˜μ–΄μ•Όν•œλ‹€κ³  μ œμ•ˆν•˜κΈ° μœ„ν•΄μ΄ 문제λ₯Ό κ²€μƒ‰ν–ˆμ§€λ§Œ μ΄μ œλŠ”μ΄ μŠ€λ ˆλ“œμ—μ„œ 인수 (특히 κ·€ν•˜μ˜ 것 !!)κ°€ 맀우 섀득λ ₯이 μžˆμŒμ„ λ°œκ²¬ν–ˆμŠ΅λ‹ˆλ‹€. Numpy 배열은 μ‹€μ œλ‘œ μ‹œν€€μŠ€κ°€ β€‹β€‹μ•„λ‹ˆλ©°μ΄λ₯Ό ꡬ둣 μ£Όλ©΄ 쒋은 것보닀 ν•΄λ₯Ό λΌμΉ˜λŠ” κ²ƒμ²˜λŸΌ λ³΄μž…λ‹ˆλ‹€. μ™œ κ·Έλ“€ μžμ‹ μ˜ κ²ƒμ΄λ˜κ²Œν•˜κ³  μ‚¬μš©μžκ°€ μ›ν•˜λŠ” μΈν„°νŽ˜μ΄μŠ€λ₯Ό λͺ…μ‹œ 적으둜 μš”μ²­ν•˜λ„λ‘ κ°•μš”ν•˜μ§€ μ•ŠλŠ” μ΄μœ λŠ” λ¬΄μ—‡μž…λ‹ˆκΉŒ?

그리고 μ΄λŸ¬ν•œ μ½”λ“œμ˜ λŒ€λΆ€λΆ„μ€ ABCμ—μ„œ isinstance 검사λ₯Ό μ‚¬μš©ν•˜λŠ” 데 μ•„λ¬΄λŸ° λ¬Έμ œκ°€ μ—†μŠ΅λ‹ˆλ‹€.

이제 μ–ΈκΈ‰ ν–ˆμœΌλ―€λ‘œ λ‚΄κ°€ μ œμ•ˆν•œ λͺ¨λ“  방법이 λ·°λ₯Ό λ°˜ν™˜ν–ˆμ„ κ²ƒμž…λ‹ˆλ‹€. μ΄λ ‡κ²Œν•˜λ©΄ μΈμŠ€ν„΄μŠ€ 검사에 μ˜¬λ°”λ₯΄κ²Œ 응닡 ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

μœ„μ™€ 같은 방법은 μ–΄λ–€ 배열과도 μž‘λ™ν•˜λŠ” μ†ŒλΉ„μž ν”„λ‘œν† μ½œλ‘œμ„œ 합리적 일 수 μžˆμ§€λ§Œ, μš°λ¦¬κ°€ ν•΄κ²°ν•˜λ €λŠ” λ¬Έμ œλŠ” λ¬΄μ—‡μž…λ‹ˆκΉŒ :)? 일반적인 파이썬 μ‹œν€€μŠ€κ°€ β€‹β€‹λ…ΈμΆœν•˜κ³  싢은 κ²ƒκ³ΌλŠ” λ‹€λ₯Έ 것 κ°™μŠ΅λ‹ˆλ‹€.

λ‚˜λŠ” 이것에 λŒ€ν•œ 닡이 μš°λ¦¬κ°€ ν•΄κ²°ν•˜λ €λŠ” λ¬Έμ œμ— 달렀 μžˆλ‹€λŠ” 데 ν™•μ‹€νžˆ λ™μ˜ν•©λ‹ˆλ‹€. νƒ€μž… μ–΄λ…Έν…Œμ΄μ…˜ kool aidλ₯Ό λ§ˆμ‹  ν›„ # type: ignore μ½”λ“œλ₯Ό 흩뿌 리지 μ•Šκ³  mypyλ₯Ό μ „λ‹¬ν•˜λŠ” κ°„κ²°ν•œ numpy μ½”λ“œλ₯Ό μž‘μ„±ν•˜λŠ” 데 관심이 μžˆμŠ΅λ‹ˆλ‹€. μ—Όλ‘μ—λ‘κ³ μžˆλŠ” λ¬Έμ œλŠ” λ¬΄μ—‡μž…λ‹ˆκΉŒ?

κΈ€μŽ„, μœ ν˜• νžŒνŠΈμ™€ λ‹€λ₯Έ λ°°μ—΄ μœ μ‚¬ κ°μ²΄μ™€μ˜ μƒν˜Έ μš΄μš©μ€ μ•„λ§ˆλ„ 쒋은 동기가 될 κ²ƒμž…λ‹ˆλ‹€. μƒˆλ‘œμš΄ 문제 λ‚˜ 메일 링리슀트 μŠ€λ ˆλ“œλ₯Ό μ—¬λŠ” 것이 μ’‹μŠ΅λ‹ˆλ‹€. μ§€κΈˆ λ‹Ήμž₯은 타이핑이 ν˜•μ„±ν•˜λŠ” 것이 κ°€μž₯ 쒋은 생각이 뭔지 잘 λͺ¨λ₯΄κ² μŠ΅λ‹ˆλ‹€.

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