åéĄãŽ@ shoyer ã @ pentschev ããããŗ@mrocklinã¨ãŽčŠąãåããŽåžã§ãããŽåéĄãéããžãīŧhttps://github.com/dask/dask/issues/4883īŧã AIUIããã¯NEP22
ããžããžãĒããĻãŗãšããĒãŧã é
åãŠã¤ããŠãĒãĢããĸããĢé
åīŧ ndarray
īŧããããã¨ãįĸēčĒããéĸæ°ãããã¨äžŋåŠã§ãã ããã¯np.asanyarray
ãĢããããäŧŧãĻããžããããĩãã¯ãŠãšåãŽčĻäģļã¯ãããžããã ãããĢããããŠã¤ããŠãĒã¯įŦčĒãŽīŧããã¯īŧé
ååãčŋããã¨ãã§ããžãã ãĒãã¸ã§ã¯ãã§éŠåãĒå¤æããĩããŧããããĻããĒãå ´åã¯ãããŠãŧãĢããã¯ããĻndarray
ãĩãã¯ãŠãšã ndarray
sããããŗããŽäģãŽããŽīŧããšãããããĒãšãīŧãŽndarray
ãŽåŧˇåļãåĻįã§ããžãã
cc @njsmith īŧNEP 22ãå ąčīŧ
ææĄãããåŽčŖ ã¯æŦĄãŽãããĢãĒããžãã
import numpy as np
# hypothetical np.duckarray() function
def duckarray(array_like):
if hasattr(array_like, '__duckarray__'):
# return an object that can be substituted for np.ndarray
return array_like.__duckarray__()
return np.asarray(array_like)
äŊŋį¨äžīŧ
class SparseArray:
def __duckarray__(self):
return self
def __array__(self):
raise TypeError
np.duckarray(SparseArray()) # returns a SparseArray object
np.array(SparseArray()) # raises TypeError
ããã§ã¯ãããŦãŧãšããĢããŧã¨ããĻnp.duckarray
ã¨__duckarray__
ãäŊŋį¨ããžããããããããŽååãŽæšãããããããžãããå¯čŊæ§ããããžãã NEP22ãŽį¨čĒãåį
§ããĻãã ããã
ãããã¯é åãã¯äģãŽã¨ããããŦãŧãšããĢããŧã¨ããĻã¯åéĄãĒãæŠčŊããžãããããĒãå°éį¨čĒã§ãããæ°ãããĻãŧãļãŧãæˇˇäšąãããå¯čŊæ§ããããããåŽéãŽAPIéĸæ°į¨ãĢåĨãŽããŽãé¸æãããã¨ããå§ãããžãã æŽåŋĩãĒããããé åãŽãããĒãã¯ãé åãĢåŧˇåļã§ããããŽãīŧãĒãšããĒãã¸ã§ã¯ããĒãŠãåĢãīŧãŽæĻåŋĩãĢãã§ãĢæĄį¨ãããĻããããanyarrayãã¯ãndarrayãŽåŽčŖ ãå ąæããããŽããŽæĻåŋĩãĢãã§ãĢæĄį¨ãããĻããžããã ãį°ãĒããģããŗããŖã¯ãšããããžãããããã¯ãããã¯é åãŽå寞ã§ãīŧãã¨ãã°ãnp.matrixã¯ãanyarrayãã§ããããããã¯é åãã§ã¯ãããžããīŧã ããã¯å¤å ¸įãĒčĒčģĸčģå°åąãĒãŽã§ãäģãŽã¨ããã¯ãããã¯ãĸãŦã¤ããäŊŋį¨ããĻããžãã ãã ããčãããããĒããˇã§ãŗãĢã¯ãarrayishãpseudoarrayãnominalarrayãersatzarrayãarraymimicãâĻãĒãŠããããžãã
äģãŽååãŽãĸã¤ããĸīŧ np.array_compatible()
ã np.array_api()
...ã
np.array_compatible
ã¯æŠčŊããå¯čŊæ§ããããžããã duckarray
ãããæ°ãĢå
ĨãŖãĻããããŠããã¯ããããžããã np.array_api
į§ã¯åĨŊãã§ã¯ãããžãããééãŖãčããį§čĻãĢä¸ããžãã
äš ããļããĢããååãåēãĻããĒããŖããŽã§ãããĸããĢãŽé åãã¨ããååãįĨįĻãããģããããããâĻâĻã
į§ã¯äēææ§ãŽããåčĒãåĨŊãã§ãããããããããŽčĄãĢæ˛ŋãŖãããĒã¨ãŧãˇã§ãŗãčããããžãas_compatible_array
īŧäēææ§ãŽããããšãĻãŽãĒãã¸ã§ã¯ããé
åã§ãããã¨ãæåŗããžãīŧã as
ã¯ããããį
ŠãããããŽã§ãīŧä¸é¨ãããšãĻãŽas
éĸæ°ãĢãšããŧãšããĒãããīŧã ããĸããĢãã¯åŗæ¸é¤¨ã§ã¯ãããããĢčĻããžããããŠãŗãã ãĒäēēããããčĻããŽã¯å°ãåĨåĻã ã¨æããžãã ããããŖãĻããããã¯ãã¯ãããĻãŗãšããĒãŧã ãĻãŧãļãŧãĢé ģįšãĢäŊŋį¨ããĻãããããå ´åãĢãŽãŋīŧã¤ãžããčĒåį¨ãŽå°ããĒããŧãĢãå°ããĒãŠããæ¸ãå§ããå ´åã§ãīŧåĢãã ã¨æããžãã
å¤åquack_array
:)
ããŽãããã¯ãĢã¤ããĻå°ãčŠŗããčĒŦæããã¨ã np.duckarray
ã§ãĢããŧãããĻããĒããã1ã¤ãŽãąãŧãšããããžããããã¯ã np.empty_like
ãĒãŠãŽéĸæ°ã¨åæ§ãĢãæĸåãŽåãĢåēãĨãåã§æ°ããé
åãäŊæãããã¨ã§ãã
>>> import numpy as np, cupy as cp
>>> a = cp.array([1, 2])
>>> b = np.ones_like(a)
>>> type(b)
<class 'cupy.core.core.ndarray'>
ä¸æšãNumPyãŽAPIãäģããĻCuPyé
åãäŊæãããarray_like
ããå ´åãããã¯ä¸å¯čŊã§ãã æŦĄãŽãããĒããŽãããã¨äžŋåŠã ã¨æããžãã
import numpy as np, cupy as cp
a = cp.array([1, 2])
b = [1, 2]
c = np.asarray(b, like=a)
ãããĢéĸãããĸã¤ããĸ/ææĄã¯ãããžããīŧ
å¤ånp.copy_likeīŧ ãŠãŽãããããŖãæŗ¨ææˇąãåŽįžŠãããã¨æããžã
īŧãã¨ãã°ãdtypeãåĢãããŠããīŧäģãŽé
åãããŗããŧãããžãã
2019åš´7æ1æĨæææĨåå5æ40åPeterAndreas Entschev <
[email protected]>æ¸ãčžŧãŋīŧ
ããŽãããã¯ãĢã¤ããĻå°ãčŠŗããčĒŦæããã¨ããĢããŧãããĻããĒããąãŧãšããã1ã¤ãããžãã
np.duckarrayãäŊŋį¨ããžããããã¯ããŋã¤ãããŧãšãŽæ°ããé åãŽäŊæã§ãã
np.empty_likeãĒãŠãŽéĸæ°ãåŽčĄãããŽã¨åæ§ãĢãæĸåãŽåã§ã
įžå¨ãæŦĄãŽãããĒãã¨ãã§ããžããnumpyãnpã¨ããĻãcupyãcpã¨ããĻã¤ãŗããŧã>>> a = cp.arrayīŧ[1ã2]īŧ>>> b = np.ones_likeīŧaīŧ>>> typeīŧbīŧ
ä¸æšãäŊæãããarray_likeãããå ´å
NumPyãŽAPIãäģããCuPyé åãããã¯ä¸å¯čŊã§ãã į§ã¯ããã
æŦĄãŽãããĒããŽãããã¨äžŋåŠã§ãīŧnumpyãnpã¨ããĻãcupyãcpã¨ããĻã¤ãŗããŧãããžã
a = cp.arrayīŧ[1ã2]īŧ
b = [1ã2]
c = np.asarrayīŧbãlike = aīŧãããĢéĸãããĸã¤ããĸ/ææĄã¯ãããžããīŧ
â
ããĒããč¨åããããŽã§ããĒãã¯ãããåãåãŖãĻããžãã
ããŽãĄãŧãĢãĢį´æĨčŋäŋĄããGitHubã§čĄ¨į¤ēããĻãã ãã
https://github.com/numpy/numpy/issues/13831?email_source=notifications&email_token=AAJJFVRCWDHRAXHHRDHXXM3P5H3LRA5CNFSM4H3HQWAKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW
ãžãã¯ãšãŦãããããĨãŧãããžã
https://github.com/notifications/unsubscribe-auth/AAJJFVRSYHUYHMPWQTW2NLLP5H3LRANCNFSM4H3HQWAA
ã
np.copy_like
ãããã§ããã į§ã¯åæããžããį§ããĄã¯ããããdtype
ãããĒããŽãåļåžĄããæšæŗãæãŖãĻãããšãã§ãã
ååŋč
ãŽčŗĒåã§įŗãč¨ŗãããžãããã np.copy_like
ãããĒããŽãNEP-22ãŽäŋŽæŖãĢããåŋ
čĻããããžãããããããĄãŧãĒãŗã°ãĒãšãã§č°čĢããåŋ
čĻããããžãããããã¨ããããĢ寞ããæãéŠåãĒãĸãããŧãã¯äŊã§ããããīŧ
ãããĢã¤ããĻåŗå¯ãĒãĢãŧãĢã¯ãããžãããã np.copy_like
ã¨np.duckarray
īŧãžãã¯į§ããĄãåŧãã§ããããŽīŧãįĩãŋåãããĻããĸããĢãŽé
åãåŧˇåļ/äŊæããæ°ããNEPãäŊæãããã¨ãĢåžåããžããããã¯ãNEP 22ãŽãããĒãæ
å ąãã§ã¯ãĒããNEP 18ãŽãããĢčĻį¯įã§ããéˇãããåŋ
čĻã¯ãããžããããģã¨ããŠãŽåæŠã¯ãNEP18 / 22ãåį
§ãããã¨ã§ãã§ãĢæããã§ãã
į´ããŧãnp.copy_like()
īŧããã¯ééãã§æ´žéŖčĄãåŋ
čĻããããžã__array_function__
ãŽãããĢæäŊããĻãīŧãžãã¯ãããŽãããĒããŽīŧ np.copy_like(sparse_array, like=dask_array)
ãããããŽé
ååãŽããããã§åŽįžŠãããã¨ãã§ããžãã
æ
å ąããããã¨ãããããžããįēéãŽææĄãĢåæããžãã np.duckarray
ã¨np.copy_like
ãŽä¸ĄæšãåŽčŖ
ãããããŽNEPãĢåãįĩãŋãäģéąã¯ããŽãããŽããŠããPRãæåēããžãã
į´ æ´ãããããããã¨ãããŧãŋãŧīŧ
2019åš´7æ1æĨæææĨåå9æ29åPeterAndreas Entschev <
[email protected]>æ¸ãčžŧãŋīŧ
æ å ąããããã¨ãããããžããįēéãŽææĄãĢåæããžãã į§
np.duckarrayã¨ãŽä¸ĄæšãåŽčŖ ãããããŽNEPã§åäŊããžã
np.copy_likeããããŽãããĢäģéąããŠããPRãæåēããĻãã ãããâ
ããĒããč¨åããããŽã§ããĒãã¯ãããåãåãŖãĻããžãã
ããŽãĄãŧãĢãĢį´æĨčŋäŋĄããGitHubã§čĄ¨į¤ēããĻãã ãã
https://github.com/numpy/numpy/issues/13831?email_source=notifications&email_token=AAJJFVW2YUBNUCJZK6JWDBTP5IWHNA5CNFSM4H3HQWAKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKT
ãžãã¯ãšãŦãããããĨãŧãããžã
https://github.com/notifications/unsubscribe-auth/AAJJFVR2KTPAZ4JPWDYYMFLP5IWHNANCNFSM4H3HQWAA
ã
į§ãŽåãŗããããĻããŽäģäēãŽãĸã¤ããĸã¨ãĩããŧããĢæčŦããžãīŧ
array_like
éĸæ°ã¨copy_like
éĸæ°ã¯ããããŠãĢããŽåŽčŖ
ãč¨åŽã§ããĒãããããĄã¤ãŗãŽååįŠēéãĢåĢãããŽã¯å°ãåĨåĻã ã¨æããžãīŧå°ãĒãã¨ããããĨãŧããŧ/ããšã¯/ãšããŧãš/ãĒãŠīŧãããã§ããīŧ ãããã¯ããĒãŧããŧãŠã¤ããããå ´åãĢãŽãŋåŊšįĢãĄãžãã ãžãã¯ãããã§äģģæãŽénumpyé
åãĒãã¸ã§ã¯ããäŊæããæšæŗããããžãããīŧ
įĸēããĢããããã¯ããã¯ãŋã¤ããŗã°ããĩããŧããããå ´åãĢãŽãŋæŦåŊãĢåŊšįĢãĄãžãã ããããįĸēããĢnp.duckarray
ã¨np.copy_like
ã¯ãåŧæ°ãNumPyé
åãŽãŋã§ããŖãĻãæŠčŊããžãããããã¯ã np.array
/ np.copy
ã¨åįã§ãã
ããšãĻãŽé
ååŽčŖ
ãĢã¯copy
ãĄãŊããããããžãããīŧ copy_like
äģŖãããĢãããäŊŋį¨ããã¨æŠčŊããã¯ãã§ããããĒãæ°ããéĸæ°ãčŋŊå ãããŽã§ããīŧ
array_like
åŋ
čĻæ§ã¯ããããžããããŠããĢįŊŽãããĢã¤ããĻ芹ãåãããã¨æããããããžããã
np.duckarray
ã¯į§ãĢã¯įãĢããĒãŖãĻããžãã
į§ã¯ãnp.copy_likeã¨np.duckarrayīŧãžãã¯į§ããĄããããåŧãļããŽīŧãįĩãŋåãããĻããĸããĢãŽé åãåŧˇåļ/äŊæããæ°ããNEPãĢåžåããžããããã¯ãNEP 22ãŽãããĒãæ å ąãã§ã¯ãĒããNEP18ãŽãããĒčĻį¯įãĒããŽã§ãã
+1
array_likeãŽåŋ čĻæ§ã¯ããããžããããŠããĢé įŊŽããããĢã¤ããĻ芹ãåãããã¨æããããããžããã
ããã¯åŽéãĢį§ãnp.copy_like
ãããĒããŽã§å¯žåĻããããąãŧãšã§ãã į§ã¯ããšãããĻããžããããé
åãNumPyäģĨå¤ãŽå ´åãããããnp.copy
ãã§ãĢæŖããããŖãšããããããĻããžãã
æįĸēãĢãããããĢãéĸæ°np.array_like
ãåį
§ããĻããžããīŧ array_like
é
åã¸ãŽæĸåãŽããšãĻãŽåį
§ãæˇˇäšąãããå¯čŊæ§ãããã¨čãããããããŽãããĒååã¯æåŗįãĢéŋããžããã ãã ãã np.copy_like
ãåŋ
čĻãĒãŗããŧãæåŗããå¯čŊæ§ããããã¨ãčĒčããžããããŗããŧããžã NumPyã§ãĒãå ´åãĢãŽãŋįēįããã np.asarray
ã¨åæ§ãŽåäŊãčĄãã¨ããã¨æããžãããĸãŦã¤ã ããã§čĒŦæãããąãŧãšã§ã¯ã a
ãnp.copy_like(a, like=b)
ãĒãŠãŽåŧãŗåēãã§b
ã¨åããŋã¤ãã§ãĒãå ´åãĢãŽãŋããŗããŧãäŊæãããŽãæåã§ãã
į§ã¯ããšãããĻããžããããé åãNumPyäģĨå¤ãŽå ´åããããã
np.copy
ãã§ãĢæŖããããŖãšããããããĻããžãã
__array_function__
ããĩããŧããããããĢčŖ
éŖžãããĻããåŋ
čĻããããžãã
æįĸēãĢãããããĢãéĸæ°
np.array_like
ãåį §ããĻããžããīŧ array_like-arraysã¸ãŽæĸåãŽããšãĻãŽåį §ãæˇˇäšąãããå¯čŊæ§ãããã¨čãããããããŽãããĒååã¯æåŗįãĢéŋããžããã
ã¯ãã ãããĻãã¯ãããããæˇˇäšąããå¯čŊæ§ããããã¨ãĢåæããžãã
ããããį§ã¯äģã
np.copy_like
ãåŋ čĻãĒãŗããŧãæåŗãããããããĒããã¨ãĢæ°ãĨããžããã
ã¯ããããŽååã¯ããŧãŋãŽãŗããŧãæåŗããžãã
åŋ čĻãĒãŗããŧãæåŗãããããããžããããããĻį§ã¯
np.asarray
ãããĒæ¯ãčãããããŽãč¯ãã¨æããžãã
ããã¯np.duckarray
ã ã¨æããžããã
ä¸č¨ãŽããŧãŋãŧãŽäžã¯ããããæįĸēãĢãããŽãĢåŊšįĢã¤ãããããĒãã¨æããžãã äģĨä¸ãĢãŗããŧããį°ĄåãĢãããããĢnp.copy_like
ã§ä¸åĄãããžããã
import numpy as np, cupy as cp
a = cp.array([1, 2])
b = [1, 2]
c = np.copy_like(b, like=a)
ããã¯np.duckarrayã ã¨æããžããã
åŽéã np.duckarray
ã¯åēæŦįãĢäŊããããé
åčĒäŊãčŋãã ãã§ãīŧãĒãŧããŧãŠã¤ããããĻããå ´åīŧãããäģĨå¤ãŽå ´åã¯np.asarray
čŋããžãīŧNumPyé
åãĢãĒããžãīŧã ãã¨ãã°ãPythonãĒãšãããCuPyé
åãååžãããã¨ã¯ã§ããžããã array_like
CuPyīŧãžãã¯äģãŽlike=
é
åīŧãĢããŖãšãããã§ããéĸæ°ããžã åŋ
čĻã§ãã
æ´æ°ãããäžã@jakirkhamãĢæčŦããžãã
c = np.copy_like(b, like=a)
ããã§ãããã¯a.__array_function__
ãäģããĻCuPyãĢããŖãšãããããããŽåąæ§ãåå¨ããĒãå ´åã¯å¤ąæããžãīŧãã¨ãã°ã a=<scipy.sparse matrix>
ã¯æŠčŊããžããīŧīŧ ããŽãããĒãã¨ãŽãããĢãæ°ããååįŠēéãžãã¯æ°ããį¸äēéį¨æ§ãĻãŧããŖãĒããŖãããąãŧã¸ãåŋ
čĻãĒãããĢæããžãã ããããããåŽå
¨ãĒæŠčŊãåããå°æĨãŽããŖãšããããĄãĢããēã ãĢäģģããĻãã ããã
with cupy_backend:
np.array(b)
NumPyčĒäŊã__array_function__
åļéãŽåéŋããĩããŧããããŽãĢæåŗããĒãæ°ããéĸæ°ããĄã¤ãŗãŽååįŠēéãĢå°å
Ĩãããã¨ã¯ãå°ãä¸åĨåēˇãĢæããžã...ã
ããã§ãããã¯
a.__array_function__
ãäģããĻCuPyãĢããŖãšãããããããŽåąæ§ãåå¨ããĒãå ´åã¯å¤ąæããžãīŧãã¨ãã°ãa=<scipy.sparse matrix>
ã¯æŠčŊããžããīŧīŧ
åŋ ãããå¤ąæããĒããã°ãĒããĒãã¨ã¯č¨ããžããã ãã¨ãã°ããããŠãĢãã§NumPyãäŊŋį¨ããĻčĻåãįēããīŧãžãã¯ãžãŖããįēįãããĒãīŧãã¨ãã§ããžãã
ããŽãããĒãã¨ãŽãããĢãæ°ããååįŠēéãžãã¯æ°ããį¸äēéį¨æ§ãĻãŧããŖãĒããŖãããąãŧã¸ãåŋ čĻãĒãããĢæããžãã ããããããããĢæŠčŊãŽå°æĨãŽããŖãšããããĄãĢããēã ãĢäģģããĻãã ãã
įĸēããĢãããĢæŠčŊãŽããŖãšããããĄãĢããēã ãããã°ãããŽã§ãããããŽč¤éãã¨ä¸äŊäēææ§ãŽåéĄãŽãããĢãããã¯äģĨåã¯čĄãããĻããĒããŖãã¨æããžããīŧ 芹ãåããããŖãã¨ãã¯å¨ããĢããĒããŖããŽã§ãæ¨æ¸Ŧããã ãã§ãã
NumPyčĒäŊã__array_function__ãŽåļéãŽåéŋããĩããŧããããŽãĢæåŗãŽãĒãæ°ããéĸæ°ããĄã¤ãŗãŽååįŠēéãĢå°å Ĩãããã¨ã¯ãå°ãä¸åĨåēˇãĢæããžã...ã
įĸēããĢããĒããŽä¸ģåŧĩã¯ããããžããããĄã¤ãŗãŽååįŠēéããéĸããããã¨ããĻãŧãļãŧãæããããå¯čŊæ§ãããã¨æããžãã å¤åį§ã¯ééãŖãĻããĻãããã¯ãã ãŽå°čąĄã§ãã ããããĢãããį§ã¯NumPyã§åäŊããĒãéĸæ°ãåŽčŖ ãããã¨ããžãŖããææĄããĻããžããããNumPyãåįŦã§äŊŋį¨ããå ´åã¯įĩļ寞ãĢåŋ čĻã¨ããããã§ã¯ãããžããã
NumPyčĒäŊã__array_function__ãŽåļéãŽåéŋããĩããŧããããŽãĢæåŗãŽãĒãæ°ããéĸæ°ããĄã¤ãŗãŽååįŠēéãĢå°å Ĩãããã¨ã¯ãå°ãä¸åĨåēˇãĢæããžã...ã
åŽéãããŽæåŗã§ã¯ã np.duckarray
ããĄã¤ãŗãŽååįŠēéãĢåąããĻããžããã
åŽéãããŽæåŗã§ã¯ã
np.duckarray
ããĄã¤ãŗãŽååįŠēéãĢåąããĻããžããã
1ã¤ã¯ããé˛åžĄå¯čŊã ã¨æããžãīŧ asarray
éĄäŧŧããĻãããåēæŦįãĢãããã¯ndarrayãŽãããĒããã¯ãŋã¤ããŽåŽįžŠãæēãããĻããžãããããã§ãã¯ããžãīŧããããã§ãã array_function_dispatch
ãå
Ŧéããããã np.lib.mixins.NDArrayOperatorsMixin
ããããããĢããã¯ãšã¤ãŗãäŊæããäēåŽãããå ´åã¯ãį¸äēéį¨æ§ãĢéĸéŖããããšãĻãŽããŽãĢ寞åŋããčŗĸæãĒæ°ãããĩããĸã¸ãĨãŧãĢãįãĢããĒãŖãĻããžãã
įĸēããĢãããĢæŠčŊãŽããŖãšããããĄãĢããēã ãããã°ãããŽã§ãããããŽč¤éãã¨ä¸äŊäēææ§ãŽåéĄãŽãããĢãããã¯äģĨåã¯čĄãããĻããĒããŖãã¨æããžããīŧ 芹ãåããããŖãã¨ãã¯å¨ããĢããĒããŖããŽã§ãæ¨æ¸Ŧããã ãã§ãã
č¤æ°ãŽįįąãããã¨æããžãã __array_function__
ã¯į§ããĄããã§ãĢæãŖãĻããããŽã¨äŧŧãĻãããŽã§ãæ¨čĢãããŽã¯į°Ąåã§ãã ãĒãŧããŧããããå°ãĒãã§ãã ããã¯æ大6ãæãŽãŋã¤ã ãšãąãŧãĢã§č¨č¨ãããŗåŽčŖ
ã§ãã
į¸äēéį¨æ§ãĢéĸéŖããããšãĻãŽããŽãŽãããŽčŗĸæãĒæ°ãããĩããĸã¸ãĨãŧãĢã¯įãĢããĒãŖãĻãããããããžããã
į§ãããŽæŦåŊãŽį°č°ã¯ãããžããããŠããĢããĒãããããŠãããĢæŠčŊãããæšãč¯ãã¨æããžãã :)
č¤æ°ãŽįįąãããã¨æããžãã __array_function__ã¯į§ããĄããã§ãĢæãŖãĻããããŽãĢäŧŧãĻãããŽã§ãæ¨čĢãããŽã¯į°Ąåã§ãã ãĒãŧããŧããããå°ãĒãã§ãã ããã¯æ大6ãæãŽãŋã¤ã ãšãąãŧãĢã§č¨č¨ãããŗåŽčŖ ã§ãã
ãããã __array_function__
ããåēãæ´ģį¨ãããå ´åã¯ã np.duckarray
ãnp.copy_like
īŧãžãã¯ããã¨åŧãļãã¨ãĢããäģãŽäŊãīŧãŽãããĒããŽãåŽčŖ
ããäģãŽé¸æčĸããããžããīŧ į§ã¯ããšãĻãŽé¸æčĸãåãå
ĨããĻããžãããããĄãããããĢæŠčŊãŽããŖãšãããæšæŗãæĄį¨ãããŽã§ã¯ãĒããäģãŽã¨ããäŊã襨į¤ēãããĻããžããããããĢã¯éˇãæéããããã __array_function__
į¯å˛ãåļéãããå¯čŊæ§ããããžãã
ãããã
__array_function__
ããåēãæ´ģį¨ãããå ´åã¯ãnp.duckarray
ãnp.copy_like
īŧãžãã¯ããã¨åŧãļãã¨ãĢããäģãŽäŊãīŧãŽãããĒããŽãåŽčŖ ããäģãŽé¸æčĸããããžããīŧ
ãĻãŧãšãąãŧãšãŽä¸é¨ããĢããŧãããã¨ããããĻãŧãšãąãŧãšãŽ80īŧ ãčļ ãããã¨ãžã§ãããŽãããĒä¸éŖãŽãĻãŧããŖãĒããŖæŠčŊãåŽéãĢåŋ čĻã ã¨æããžãã ãããåéŋããæšæŗã¯ãĒãã¨æããžãã ãĄã¤ãŗãŽååįŠēéãäšąéãĢãããŽã¯åĨŊãã§ã¯ãĒããŽã§ãããããŽãããŽããč¯ãå ´æãčĻã¤ãããã¨ãææĄããžãã
į§ã¯ããšãĻãŽé¸æčĸãåãå ĨããĻããžãããããĄãããããĢæŠčŊãŽããŖãšãããæšæŗãæĄį¨ãããŽã§ã¯ãĒããäģãŽã¨ããäŊã襨į¤ēãããĻããžããããããĢã¯éˇãæéããããã
__array_function__
į¯å˛ãåļéãããå¯čŊæ§ããããžãã
ã¤ãžããããã§ããã¤ããŽæãããĒįŠ´ãåĄãã§ããã ãã§ãããīŧ ãããč¤éãĒãąãŧãšããŽããšãĻãįļ˛įž
ãããã¨ã¯æąēããĻãããžããã np.errstate
ãžãã¯np.dtype
ããĒãŧããŧãŠã¤ããããå ´åãããããŗãĢããŧãšãŽãĸãããŧãã§ã¯įēįããžããã
äģŖæŋæĄãĢã¤ããĻã¯ã scipy.fft
ãäŊæãããããĢčŠĻããĻãŋããã¨ããĻããžãã https īŧ
uarrayãäŊŋį¨ããããŖãšããããĸãããŧãã¯įĸēããĢčåŗæˇąãããŽã§ãã ãĄãŋé åīŧDaskãxarrayãĒãŠīŧãŽåĻįæšæŗãĢã¤ããĻã¯ãžã åŋé ã§ããã čŠŗį´°ã¯ããĄããŽãŗãĄãŗãããčĻ§ãã ããã ããã寞åĻãããĻããããŠããã¯ä¸æã§ãīŧãã ããäŊããčĻéããå ´åã¯äŋŽæŖããĻãã ããīŧã SciPyãŽäģãŽäēēã¨ååããĻãããŽåéĄããŠãŽãããĢč§ŖæąēããããčŠĻããĻãŋããã¨æããžãã
čŠŗį´°ã¯ããĄããŽãŗãĄãŗãããčĻ§ãã ããã ããã寞åĻãããĻããããŠããã¯ä¸æã§ãīŧãã ããäŊããčĻéããå ´åã¯äŋŽæŖããĻãã ããīŧã
å éąãŽå¤æ´ã§ããã¯č§Ŗæąēããã¨æããžãããįĸēãã§ã¯ãããžãããåĨãŽãšãŦãããĢæŽããžãããã
SciPyãŽäģãŽäēēã¨ååããĻãããŽåéĄããŠãŽãããĢč§ŖæąēããããčŠĻããĻãŋããã¨æããžãã
į§ã¯ãããĢããžããããĒããĢį´æĨäŧããŽã¯į´ æ´ããããã¨ã§ãã
ããļãnp.coerce_like()
ãžãã¯np.cast_like()
ã¯copy_like
ãããč¯ãååãĒãŽã§ããŗããŧãåŋ
ãããåŋ
čĻã§ã¯ãĒããã¨ã¯æããã§ãã åŋ
čĻãĒæŠčŊã¯ãé
ååã¨dtypeãå¤æãããã¨ãé¤ããĻã .cast()
ãĄãŊããã¨é常ãĢããäŧŧãĻããžãããŠãĄããŽåŧæ°ã§ãåŽčŖ
ã§ãããããĢãããããŗãĢã§ã¯ãĒãéĸæ°ãĢããåŋ
čĻããããžãã
uarrayãäŊŋį¨ããããŖãšããããĸãããŧãã¯įĸēããĢčåŗæˇąãããŽã§ãã ãĄãŋé åīŧDaskãxarrayãĒãŠīŧãŽåĻįæšæŗãĢã¤ããĻã¯ãžã åŋé ã§ããã
uarray
ã¯č¤æ°ãŽããã¯ã¨ãŗãããĩããŧãããĻãããããããŽãããĒããŽãæŠčŊããã¯ãã§ã
with ua.set_backend(inner_array_backend), ua.set_backend(outer_array_backend):
s = unumpy.sum(meta_array)
ããã¯ããĄãŋé
åãããŽåŽčŖ
å
ã§ua.skip_backend
åŧãŗåēããããĢãããããĄãŋé
åãŽããã¯ã¨ãŗããåãŽä¸ä¸č´ã§NotImplemented
ãčŋãå ´åãĢåŽčĄã§ããžãã
ccīŧ @hameerabbasi
ãããĢã¤ããĻčŠŗããčĒŦæããžããååã¨ããĻã dask.array
å ´åã da
ãåĢãããŽã¯ããšãĻãskip_backendãĒãã§æ¸ãčžŧãžããžãã NumPyãäŊŋį¨ããããŽãĢã¯ãskip_backendãåŋ
čĻã§ãã
ãžãã¯ã da
å ´åã¯ããã¤ã§ãããŖãšãããããšãããããĻįŦčĒãŽåŽčŖ
ãį´æĨåŧãŗåēãããŠããĢã§ãskip_backend(dask.array)
ãįŊŽããã¨ãã§ããžãã
ones
ã cast
ãããĢãé
åããĸãŋãããããĻããĒãéĸæ°ãããŖãšãããããå ´åã¯ãããã¯ã¨ãŗããč¨åŽããã ãã§åŽäēããžãã np.errstate
ã¨np.dtype
ãĢã¤ããĻãåãã§ãã unumpy
np.ufunc
ããĢããŧããäžããããžãã
å
ãŽåéĄãĢéĸããĻã¯ã uarray
ã¯__ua_convert__
ããããŗãĢãæäžããžããããã¯ãžããĢãããčĄããžãã åĨãŽæšæŗã¯ãããã¯ã¨ãŗããasarray
į´æĨãĒãŧããŧãŠã¤ããããã¨ã§ãã
ä¸ãŽããããĸããããĻãããĻãããã¨ãuarray
ã@rgommersã@ peterbell10ã@hameerabbasiã
ããããį§ãčĻããããĢãč¨įŽãéå§ããåãĢéŠåãĒããã¯ã¨ãŗããč¨åŽããåŋ
čĻããããžããããã¯æŖããã§ããīŧ __array_function__
ãŽåŠįšãŽ1ã¤ã¯ããŠã¤ããŠãĒãäģãŽãŠã¤ããŠãĒãĢåŽå
¨ãĢäžåããĒããã¨ã§ãããã¨ãã°ãDaskã¯CuPyãŽåå¨ãįĨãåŋ
čĻããããžããã
@pentschevããã¯ãããã¯ã¨ãŗãããįģé˛ãããæŠčŊãčŋŊå ããæčŋãžã§
äēč§Ŗããžãããããã¯ã https://github.com/numpy/numpy/issues/13831#issuecomment-507432311ã§č¨åããããŽã§ããã httpsīŧ //github.com/Quansight-Labs/uarrayãŽããã¯ã¨ãŗããæããĻããžãã / tree / master / unumpyã
é常ãĢå¤ããŽčŗĒåãããĻįŗãč¨ŗãããžãããããã¨ãã°ãNumPyã¨SparseãŽä¸ĄæšãĒãŠãããžããžãĒããã¯ã¨ãŗããĢäžåããĻããæļįŠēãŽãĸããĒãąãŧãˇã§ãŗãããå ´åã¯ãŠããĒããžããããĻãŧãļãŧå ĨåãĢåŋããĻãããšãĻãNumPyãŽãŋãSparseãŽãŋããžãã¯ä¸ĄæšãŽįĩãŋåãããĢãĒããžãã @ peterbell10ã¯ãč¤æ°ãŽããã¯ã¨ãŗãããĩããŧããããĻããã¨čŋ°ãšãĻããžãhttps://github.com/numpy/numpy/issues/13831#issuecomment -507458331ã§ãããããã¯ã¨ãŗããŽé¸æãčĒååã§ããžãããããã¨ã3ã¤ãŽãąãŧãšãåĨã ãĢåĻįããåŋ čĻããããžããīŧ
ããããŖãĻãããŽå ´åãįæŗįãĢã¯NumPyãįģé˛ããSparseãŽãŗãŗãããšããããŧã¸ãŖãŧãäŊŋį¨ããåŋ
čĻãĢåŋããĻsparseããNotImplemented
ãčŋããžãããããĢãããNumPyãĢããŠãŧãĢããã¯ããžãã
SciPy @ rgommers ã @ danielballan ããããĻį§čĒčēĢãããŽåéĄãĢã¤ããĻ芹ããžããã duckarray
īŧããŽååãäŊŋį¨īŧãŽčŋŊå ãįļčĄãããã¨ã¯äžĄå¤ãããã¨įĩčĢäģããžããã ã¨ã¯ãããããã¯1.18ãĢäēåŽãããĻãããããĢčãããžããã čĒ¤č§Ŗããããč¨æŖããĻãã ããã ãããčããã¨ãPRãå§ããĻã大ä¸å¤Ģã§ããããīŧ
duckarray
īŧããŽååãäŊŋį¨īŧãŽčŋŊå ãįļčĄãããã¨ã¯äžĄå¤ãããã¨įĩčĢäģããžããã ã¨ã¯ãããããã¯1.18ãĢäēåŽãããĻãããããĢčãããžããã čĒ¤č§Ŗããããč¨æŖããĻãã ããã ãããčããã¨ãPRãå§ããĻã大ä¸å¤Ģã§ããããīŧ
ããã¯ããšãĻį§ãĢã¯į´ æ´ããããã¨ãŽãããĢčãããžãããæŖįĸēãĒææĄãčŠŗããčĒŦæããįãNEPããå§ãããŽãããã§ãããã https://github.com/numpy/numpy/issues/13831#issuecomment-507334210ãåį §ããĻ
įĸēããĢããã¯įãĢããĒãŖãĻããžãã đ
äģĨåãĢåãä¸ãããŗããŧãã¤ãŗããĢã¤ããĻã¯ãæĸåãŽãĄãĢããēã ã§ã¯č§Ŗæąēã§ããĒããŽã§ã¯ãĒããã¨æããžãã įšãĢããããŽčĄã¯ãŠãã§ããīŧ
a2 = np.empty_like(a1)
a2[...] = a1[...]
įĸēããĢãããã1čĄãĢãžã¨ããã¨ããã§ãããã ãããããŽãĻãŧãšãąãŧãšã§ãã§ãĢæŠčŊããĻããããŠããããžãã¯ä¸čļŗããĻããããŽãããããŠããã ããįĨãããã
īŧããŽååãäŊŋį¨ããĻīŧduckarrayãŽčŋŊå ãįļčĄãããã¨ã¯äžĄå¤ãããã¨įĩčĢäģããžããã
ããã¯ããšãĻį§ãĢã¯į´ æ´ããããã¨ãŽãããĢčãããžãããæŖįĸēãĒææĄãčŠŗããčĒŦæããįãNEPããå§ãããŽãããã§ãããã īŧ13831īŧãŗãĄãŗãīŧãåį §
į§ã¯ãã§ãĢãããæ¸ãå§ããžãããããžã ãããåŽäēãããã¨ãã§ããžããã§ããīŧį§ãŽæĒãč¨įģhttps://github.com/numpy/numpy/issues/13831#issuecomment-507336302īŧã
äģĨåãĢåãä¸ãããŗããŧãã¤ãŗããĢã¤ããĻã¯ãæĸåãŽãĄãĢããēã ã§ã¯č§Ŗæąēã§ããĒããŽã§ã¯ãĒããã¨æããžãã įšãĢããããŽčĄã¯ãŠãã§ããīŧ
a2 = np.empty_like(a1) a2[...] = a1[...]
įĸēããĢãããã1čĄãĢãžã¨ããã¨ããã§ãããã ãããããŽãĻãŧãšãąãŧãšã§ãã§ãĢæŠčŊããĻããããŠããããžãã¯ä¸čļŗããĻããããŽãããããŠããã ããįĨãããã
ããã¯å¯čŊã§ãããįšåĨãĒãŗããŧãã¸ãã¯ãåŋ čĻãĢãĒãå ´åããããžãīŧCuPy https://github.com/cupy/cupy/pull/2079ãĒãŠīŧã
ã¨ã¯č¨ãããŽãŽãããŽį¨ŽãŽčŋŊå ãŗãŧããåŋ čĻãĢãĒããŽãéŋãããããĢããŗããŧæŠčŊãæåãããããžããã
ä¸æšãããã¯asarray
ä¸į¨ŽãŽäģŖæŋåãĢãĒããžãã ããããŖãĻã copy_like
æ°ããéĸæ°ãŽäģŖãããĢãNEP-18ãĢããŖãĻææĄããã
ããããĢã¯įŦčĒãŽããããŗãĢãåŋ čĻã§ãã
..ã
arrayã¨asarrayã¯ãåŽéãŽnumpy.ndarrayãĒãã¸ã§ã¯ãã¸ãŽåŧˇåļãæį¤ēįãĢæåŗããĻããããã§ãã
ãããåæ¤č¨ãããå ´åã¯ãæ°ãããšãŦãããéå§ããæšãããã§ãããã ãĸã¤ããĸãææĄãį°č°ã¯ãããžããīŧ
ä¸č¨ãŽį§ãŽãŗãĄãŗããæįĸēãĢãããããĢãį§čĒčēĢãæ°ããããããŗãĢãį´ æ´ããããĸã¤ããĸã§ããããŠããã¯ããããžããīŧãããããį§ãäēæ¸ŦããĻããĒãå¤ããŽåäģãĒčŠŗį´°ãåĢãžããĻããžãīŧãæŦåŊãĢãããį§ããĄãåæ¤č¨ããĻč°čĢããåŋ čĻããããĸã¤ããĸã§ããããŠããįåãĢæãŖãĻããžãã
SciPy'19ã§ãŽéįēč äŧč°ã¨ãšããĒãŗããããŽãŗãŗãģãŗãĩãšã¯æŦĄãŽã¨ããã§ãããæŦĄãŽãšããããĢé˛ãåãĢã1.17.0ãå ŦéããĻãåŽéãŽįĩé¨ãįŠãã§ãŋãžãããã
ãããį§ããĄãåæ¤č¨ããĻč°čĢããšããĸã¤ããĸã§ããããŠããæŦåŊãĢįåãĢæãŖãĻããžãã
ããããããã§ãããæ°ãæã§ã
ããããããã§ãããæ°ãæã§ã
čŋäŋĄãããã¨ãããããžãã
äģĨåãĢåãä¸ãããŗããŧãã¤ãŗããĢã¤ããĻã¯ãæĸåãŽãĄãĢããēã ã§ã¯č§Ŗæąēã§ããĒããŽã§ã¯ãĒããã¨æããžãã įšãĢããããŽčĄã¯ãŠãã§ããīŧ
a2 = np.empty_like(a1) a2[...] = a1[...]
įĸēããĢãããã1čĄãĢãžã¨ããã¨ããã§ãããã ãããããŽãĻãŧãšãąãŧãšã§ãã§ãĢæŠčŊããĻããããŠããããžãã¯ä¸čļŗããĻããããŽãããããŠããã ããįĨãããã
ãããĢéĸããį§ãŽä¸ģãĒåéĄã¯ãä¸å¤ãŽãĸããĢé åã§ã¯æŠčŊããĒããã¨ã§ããããã¯ãããģãŠįãããã¨ã§ã¯ãããžããã ãžããNumPyãŽå ´åãé åãå˛ãåŊãĻãĻãããããåããčŋŊå ãŗãšãã¯ãģãŧãŧããĢãĒãå¯čŊæ§ããããžããããããããšãĻãŽãĸããĢé åãĢåŊãĻã¯ãžãããŠããã¯ããããžããã
äģĨåãĢåãä¸ãããŗããŧãã¤ãŗããĢã¤ããĻã¯ãæĸåãŽãĄãĢããēã ã§ã¯č§Ŗæąēã§ããĒããŽã§ã¯ãĒããã¨æããžãã įšãĢããããŽčĄã¯ãŠãã§ããīŧ
a2 = np.empty_like(a1) a2[...] = a1[...]
įĸēããĢãããã1čĄãĢãžã¨ããã¨ããã§ãããã ãããããŽãĻãŧãšãąãŧãšã§ãã§ãĢæŠčŊããĻããããŠããããžãã¯ä¸čļŗããĻããããŽãããããŠããã ããįĨãããã
ããã¯å¯čŊã§ãããįšåĨãĒãŗããŧãã¸ãã¯ãåŋ čĻãĢãĒãå ´åããããžãīŧCuPy cupy / cupyīŧ2079ãĒãŠīŧã
ã¨ã¯č¨ãããŽãŽãããŽį¨ŽãŽčŋŊå ãŗãŧããåŋ čĻãĢãĒããŽãéŋãããããĢããŗããŧæŠčŊãæåãããããžããã
ä¸æšãããã¯
asarray
ä¸į¨ŽãŽäģŖæŋåãĢãĒããžãã ããããŖãĻãcopy_like
æ°ããéĸæ°ãŽäģŖãããĢãNEP-18ãĢããŖãĻææĄãããããããĢã¯įŦčĒãŽããããŗãĢãåŋ čĻã§ãã
..ã
arrayã¨asarrayã¯ãåŽéãŽnumpy.ndarrayãĒãã¸ã§ã¯ãã¸ãŽåŧˇåļãæį¤ēįãĢæåŗããĻããããã§ãããããåæ¤č¨ãããå ´åã¯ãæ°ãããšãŦãããéå§ããæšãããã§ãããã ãĸã¤ããĸãææĄãį°č°ã¯ãããžããīŧ
np.array
ãžãã¯np.asarray
ãæ°ããããããŗãĢã§å¤æ´ãããŽã¯č¯ãčãã§ã¯ãĒãã¨æããžãã ããããŽįĸēįĢãããæåŗã¯ãNumPyé
åãĢããŖãšããããã¨ã§ããããããåēæŦįãĢnp.duckarray
ãåŋ
čĻãĒįįąã§ãã
ããã¯č¨ãŖãĻãã like
åŧæ°ãduckarray
čŋŊå ãããã¨ãæ¤č¨ã§ããžãã ãããĢã¯ãä¸č¨ãŽį°ĄįĨåãããææĄããããããŗãĢãå¤æ´ããåŋ
čĻããããžã-å¤å__duckarray__
ãããĒå°į¨ããããŗãĢãŽäģŖãããĢ__array_function__
ãäŊŋį¨ãããŽã§ããīŧ į§ã¯ãããæŦåŊãĢčããĻããžããã
äģĨåãĢåãä¸ãããŗããŧãã¤ãŗããĢã¤ããĻã¯ãæĸåãŽãĄãĢããēã ã§ã¯č§Ŗæąēã§ããĒããŽã§ã¯ãĒããã¨æããžãã įšãĢããããŽčĄã¯ãŠãã§ããīŧ
a2 = np.empty_like(a1) a2[...] = a1[...]
įĸēããĢãããã1čĄãĢãžã¨ããã¨ããã§ãããã ãããããŽãĻãŧãšãąãŧãšã§ãã§ãĢæŠčŊããĻããããŠããããžãã¯ä¸čļŗããĻããããŽãããããŠããã ããįĨãããã
ãããĢéĸããį§ãŽä¸ģãĒåéĄã¯ãä¸å¤ãŽãĸããĢé åã§ã¯æŠčŊããĒããã¨ã§ããããã¯ãããģãŠįãããã¨ã§ã¯ãããžããã ãžããNumPyãŽå ´åãé åãå˛ãåŊãĻãĻãããããåããčŋŊå ãŗãšãã¯ãģãŧãŧããĢãĒãå¯čŊæ§ããããžããããããããšãĻãŽãĸããĢé åãĢåŊãĻã¯ãžãããŠããã¯ããããžããã
ããã¯å ŦæŖã§ãã åŽéãį§ããĄã¯ãã§ãĢįŠäēãåį´åãããã¨ãã§ããžãã ãã¨ãã°ãããã¯įžå¨CuPyã¨Sparseã§æŠčŊããžãã
a2 = np.copy(a1)
ããã¯å ŦæŖã§ãã åŽéãį§ããĄã¯ãã§ãĢįŠäēãåį´åãããã¨ãã§ããžãã ãã¨ãã°ãããã¯įžå¨CuPyã¨Sparseã§æŠčŊããžãã
a2 = np.copy(a1)
ã¯ãããã ãããããŽduck-arrayãããŽäģãŽduck-arrayãŽãŋã¤ããĢãŗããŧããããã¨ãåŋ čĻã§ãã
np.array
ãžãã¯np.asarray
ãæ°ããããããŗãĢã§å¤æ´ãããŽã¯č¯ãčãã§ã¯ãĒãã¨æããžãã ããããŽįĸēįĢãããæåŗã¯ãNumPyé åãĢããŖãšããããã¨ã§ããããããåēæŦįãĢnp.duckarray
ãåŋ čĻãĒįįąã§ãã
į§ããããĢã¤ããĻįĸēäŋĄãæãĻããããŽčŗĒåããããã¨ããæ°ãé˛ãžãĒããŖããŽã§ãäģæĨãžã§ããããĒããŖããŽã§ãã
ããã¯č¨ãŖãĻããduckarrayãĢåæ§ãŽåŧæ°ãčŋŊå ãããã¨ãæ¤č¨ã§ããžãã ããŽãããĢã¯ãä¸č¨ãŽį°ĄįĨåãããææĄããããããŗãĢãå¤æ´ããåŋ čĻããããžããããããã__ duckarray__ãŽãããĒå°į¨ããããŗãĢãŽäģŖãããĢ__array_function__ãäŊŋį¨ããžããīŧ į§ã¯ãããæŦåŊãĢčããĻããžããã
ããã§äŊãåéĄãããããŠããã¯ããããžããããããããæŗ¨æãåŋ
čĻã§ãããį§ã¯ããŽãĸã¤ããĸãåĨŊããĢãĒãåžåããããžãã ããã¯ããžããžãĒãŦããĢã§åéˇãĢčĻãããããããžãããã like
ããŠãĄãŧãŋãčŋŊå ããäģŖãããĢãæĸåãŽããŋãŧãŗãĢåžãã¨ã duckarray
ã¨duckarray_like
ãžããīŧ
ã¯ãããã ãããããŽduck-arrayãããŽäģãŽduck-arrayãŽãŋã¤ããĢãŗããŧããããã¨ãåŋ čĻã§ãã
ãããnp.copyto
åēãĨããĻčĄããŽã¯ãŠãã§ããīŧ
ããã
np.copyto
åēãĨããĻčĄããŽã¯ãŠãã§ããīŧ
į§ãééãŖãĻããå ´åã¯ãé æ ŽãĒãč¨æŖããĻãã ããããã ããæŦĄãŽãããĒæåŗã§ããã¨æŗåŽããĻããžãã
np.copyto(cupy_array, numpy_array)
NumPyãįžå¨ãŽåäŊãå¤æ´ããææãããã¨äģŽåŽããã¨ãããã¯æŠčŊããå¯čŊæ§ããããžãããã¨ãã°ã asarray
常ãĢåŽå
ãNumPyé
åã§ãããã¨ãæåŗããžããã copyto
ã¯åãäģŽåŽãããžããīŧ
np.copyto
ãã§ãĢ__array_function__
ã§ãŽããŖãšãããããĩããŧãããĻããžãããããã¯ãģãŧåįã§ãã
def copyto(dst, src):
dst[...] = src
äģĨä¸ã¨åįãŽããŽãåŋ čĻã§ãã
def copylike(src, like):
dst = np.empty_like(like)
dst[...] = src
return dst
np.copyto
ãã§ãĢ__array_function__
ã§ãŽããŖãšãããããĩããŧãããĻããžãããããã¯ãģãŧåįã§ããdef copyto(dst, src): dst[...] = src
äģĨä¸ã¨åįãŽããŽãåŋ čĻã§ãã
def copylike(src, like): dst = np.empty_like(like) dst[...] = src return dst
æŖč§Ŗã§ãããããį§ããĄãæãã§ãããã¨ã§ãã copyto
ãããŖãšãããããããŊãŧãšã¨åŽå
ãåããŋã¤ããŽå ´åãĢæŠčŊããžããåŽå
é
åãŽãŠã¤ããŠãĒãĢããŖãšãããã§ããããŽãåŋ
čĻã§ãã
ããã¨ã copyto
ã¯ãį§ããĄãŽčãæšãĢããŖãĻã¯ããžã æåŗããããžãã ãã¨ãã°ãæŦĄãŽãĻãŧãšãąãŧãšãčããĻãŋãžãããã
np.copyto(cp.ndarray, np.random.random((3,)))
ããã¯ãåčŋ°ãŽãããĢãããŧãŋãŽå˛ãåŊãĻã¨ãŗããŧãŽãããĒããŽãĢå¤æãããå¯čŊæ§ããããžãã dst
īŧããŽå ´åã¯cp.ndarray
īŧãããŖãšãããããã¨ãä¸å¤ãŽé
åãæã¤ãŠã¤ããŠãĒããããéŠåãĒæšæŗã§åŽčŖ
ã§ããžãã ãžããæ¸åŋĩäēé
ã¨æãããæ°ããAPIīŧNumPyãæäžããã ãã§ãäŊŋį¨ããĒãīŧãčŋŊå ããæéãįããžãã
æčŋį§ãĢčĩˇããŖãåĨãŽčããæĩŽãåŊĢããĢãããããĢãããããŽAPIãäģãŽãŠã¤ããŠãĒéãŽããĻãŗãšããĒãŧã ã§äŊãæåŗãããīŧãã¨ãã°ãDaskã¨XarrayããŠãŽãããĢį¸äēäŊį¨ãããīŧãĢã¤ããĻčãã䞥å¤ããããžãã
æãåčãĢãĒããŗãĄãŗã
å¤å
quack_array
:)