Numpy-어레이와 아스 레이
Numpy array()
와 asarray()
기능 의 차이점은 무엇입니까 ? 언제가 아니라 다른 것을 사용해야합니까? 그들은 내가 생각할 수있는 모든 입력에 대해 동일한 출력을 생성하는 것 같습니다.
다른 질문은 다른 배열 생성 루틴asanyarray
이나 다른 배열 생성 루틴 에 대한 질문으로 리디렉션되므로 각 질문에 대한 간략한 요약이 필요합니다.
차이점은 주로 새 배열을 복사본으로 만드는 것과 달리 입력을 변경하지 않고 반환하는 시점에 관한 것입니다.
array
복사시기를 결정하는 플래그를 포함하여 다양한 옵션 (대부분의 다른 기능은 그 주위에 얇은 래퍼 임)을 제공합니다. 전체 설명은 문서만큼 오래 걸릴 것입니다 ( Array Creation 참조). 간단히 말하면 몇 가지 예가 있습니다.
가정 a
입니다 ndarray
, 그리고 m
A는 matrix
, 그들 모두는이 dtype
의를 float32
:
np.array(a)
그리고np.array(m)
그 기본 동작이기 때문에, 모두를 복사합니다.np.array(a, copy=False)
및np.array(m, copy=False)
복사 할m
수 없습니다하지만a
때문에,m
하지 않습니다ndarray
.np.array(a, copy=False, subok=True)
하고np.array(m, copy=False, subok=True)
있기 때문에, 복사하지 둘 것이다m
A는matrix
의 서브 클래스 인ndarray
.np.array(a, dtype=int, copy=False, subok=True)
dtype
호환되지 않기 때문에 둘 다 복사합니다 .
다른 함수의 대부분은 array
복사가 발생할 때 해당 컨트롤을 둘러싼 얇은 래퍼 입니다.
asarray
: 호환되는 경우 입력이 복사되지 않은 상태로 반환됩니다ndarray
(copy=False
).asanyarray
: 입력이 ( , )ndarray
와 같은 호환 가능 하거나 하위 클래스 인 경우 복사되지 않은 상태로 반환됩니다 .matrix
copy=False
subok=True
ascontiguousarray
:ndarray
연속 된 C 순서 (copy=False
,) 와 호환되는 경우 입력이 복사되지 않은 상태로 반환됩니다order='C')
.asfortranarray
: 입력이ndarray
연속 포트란 순서 (copy=False
,order='F'
) 와 호환되는 경우 복사되지 않은 상태로 반환됩니다 .require
: 지정된 요구 사항 문자열과 호환되는 경우 입력이 복사되지 않은 상태로 리턴됩니다.copy
: 입력이 항상 복사됩니다.fromiter
: 입력은 반복 가능한 것으로 취급됩니다 (예를 들어, 반복자가있는 배열 대신 반복자의 요소로 배열을 구성 할 수 있습니다object
). 항상 복사했습니다.
이 편의 기능 등도 있습니다 asarray_chkfinite
(같은 복사 규칙 asarray
,하지만 인상은 ValueError
어떤이있는 경우 nan
또는 inf
값)과 같은 서브 클래스에 대한 생성자 matrix
또는 기록 배열과 같은 특별한 경우는 물론 실제의 ndarray
수 생성자 (직접 배열을 생성 버퍼를 통한 보폭).
의 정의asarray
이다
def asarray(a, dtype=None, order=None):
return array(a, dtype, copy=False, order=order)
array
옵션이 적다는 점을 제외하고는와 같습니다 copy=False
. array
이 copy=True
기본적으로.
가장 큰 차이점은 array
(기본적으로) 객체를 복사하지만 asarray
필요한 경우가 아니라면 복사 하지 않는다는 것입니다.
차이점은이 예제에서 확인할 수 있습니다.
행렬을 생성하다
>>> A = numpy.matrix(numpy.ones((3,3))) >>> A matrix([[ 1., 1., 1.], [ 1., 1., 1.], [ 1., 1., 1.]])
numpy.array
수정 하는 데 사용 합니다A
. 사본을 수정하기 때문에 작동하지 않습니다>>> numpy.array(A)[2]=2 >>> A matrix([[ 1., 1., 1.], [ 1., 1., 1.], [ 1., 1., 1.]])
numpy.asarray
수정 하는 데 사용 합니다A
.A
자체 수정 중이므로 효과가 있습니다.>>> numpy.asarray(A)[2]=2 >>> A matrix([[ 1., 1., 1.], [ 1., 1., 1.], [ 2., 2., 2.]])
도움이 되었기를 바랍니다!
차이점은 array
및 문서에 명확하게 언급 되어 asarray
있습니다. 차이점은 인수 목록에 있으므로 해당 매개 변수에 따라 함수의 동작입니다.
기능 정의는 다음과 같습니다.
numpy.array(object, dtype=None, copy=True, order=None, subok=False, ndmin=0)
과
numpy.asarray(a, dtype=None, order=None)
다음 인수로 전달 될 수있는 것들이다 array
및 하지 asarray
로 문서에 언급 된 :
copy : bool, optional true (기본값)이면 객체가 복사 됩니다. 그렇지 않으면, 사본을
__array__
리턴하거나 obj가 중첩 된 시퀀스이거나 다른 요구 사항 (dtype, order 등)을 충족시키기 위해 사본이 필요한 경우에만 사본이 작성됩니다.subok : bool, 선택적 True 인 경우 하위 클래스가 전달되고 , 그렇지 않으면 반환 된 배열이 기본 클래스 배열이됩니다 (기본값).
ndmin : int, optional 결과 배열에 필요한 최소 차원 수를 지정합니다 . 이 요구 사항을 충족하는 데 필요한 모양이 미리 붙습니다.
차이점을 보여줄 수있는 간단한 예가 있습니다.
가장 큰 차이점은 배열이 원본 데이터의 복사본을 만들고 다른 객체를 사용하여 원본 배열의 데이터를 수정할 수 있다는 것입니다.
import numpy as np
a = np.arange(0.0, 10.2, 0.12)
int_cvr = np.asarray(a, dtype = np.int64)
배열 (a)의 내용은 그대로 유지되지만 여전히 원래 배열의 내용을 수정하지 않고 다른 객체를 사용하여 데이터에 대한 작업을 수행 할 수 있습니다.
참고 URL : https://stackoverflow.com/questions/14415741/numpy-array-vs-asarray
'IT story' 카테고리의 다른 글
“X-Content-Type-Options = nosniff”란 무엇입니까? (0) | 2020.04.05 |
---|---|
java에서 "strictfp"키워드를 언제 사용해야합니까? (0) | 2020.04.05 |
NSDate를 NSString으로 변환 (0) | 2020.04.04 |
Django를 사용하는 OpenID에 가장 적합한 솔루션은 무엇입니까? (0) | 2020.04.04 |
node_modules 폴더 안에 스크립트를 포함시키는 방법은 무엇입니까? (0) | 2020.04.04 |