it-source

np.array()와 np.asarray()의 차이점은 무엇입니까?

criticalcode 2022. 11. 20. 12:17
반응형

np.array()와 np.asarray()의 차이점은 무엇입니까?

NumPy와 NumPy의 차이점은 무엇입니까?언제 다른 한쪽을 사용하는 것이 좋을까요?동일한 출력을 생성하는 것 같습니다.

정의는 다음과 같습니다.

def asarray(a, dtype=None, order=None):
    return array(a, dtype, copy=False, order=order)

...array, 「」, 「」, 「」, 「」,copy=Falsearray 있다copy=True폴트입입니니다

가장 큰 차이점은 이다.array (복사)는 오브젝트의 복사본을 만듭니다.asarray필요없으면 안 할 거야

되고 에 이 으로 리다이렉트 되고 있습니다.asanyarray또는 어레이의 작성 루틴에 대해서는 각각에 대해 간략하게 요약하는 것이 좋습니다.

차이는 주로 새 어레이를 복사본으로 만드는 것이 아니라 입력을 변경하지 않고 반환하는 시점에 있습니다.

array 그럼 복사 타이밍을 결정하는 플래그를 포함한 다양한 옵션이 준비되어 있습니다(다른 기능의 대부분은 그 주위에 있는 씬래퍼입니다).상세한 설명은 문서와 마찬가지로 시간이 걸립니다(「어레이 작성」을 참조해 주세요).단, 예를 몇 가지 나타냅니다.

a는 입니다.ndarray , , , , 입니다.m는 입니다.matrix둘다 가 .dtypefloat32:

  • 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는 입니다.matrixndarray.
  • np.array(a, dtype=int, copy=False, subok=True)다 . 이 둘 다 베끼기 때문이다.dtype호환되지 않습니다.

은, 대부분, 얇은 있습니다.array이치노

  • : 입력이 호환성이 있는 경우 복사되지 않고 반환됩니다asarray.ndarray )copy=False를 참조해 주세요.
  • : 입력이 호환성이 있는 경우 복사되지 않고 반환됩니다asanyarray.ndarray(예: class서 like like like like like like like like like)와 같은 서브클래스matrix )copy=False,subok=True를 참조해 주세요.
  • : 입력이 호환성이 있는 경우 복사되지 않고 반환됩니다ascontiguousarray.ndarray된 C순서('C')copy=False,order='C').
  • : 입력이 호환성이 있는 경우 복사되지 않고 반환됩니다asfortranarray.ndarray 순서 「Fortran」)로 합니다.copy=False,order='F'를 참조해 주세요.
  • : 입력이 지정된 요건 문자열과 호환되는 경우 복사되지 않은 상태로 반환됩니다require.
  • : 입력은 항상 복사됩니다copy.
  • : 입력은 반복 가능한 것으로 취급됩니다(예를 들어, 데이터 교환 대신 반복자의 요소로 배열을 구성할 수 있습니다fromiter).object어레이(반복기 포함), 항상 복사됩니다.

(와 같은 복사 규칙)과 같은 편리한 기능도 있습니다.asarray , , , , , , , , , , , , 를 .ValueError라도 nan ★★★★★★★★★★★★★★★★★」inf 및 (예: ) 。matrix또는 레코드 어레이와 같은 특수한 경우에는 물론 실제 컨스트럭터(이것에 의해 버퍼상에서 직접 배열을 작성할 수 있습니다)도 가능합니다.

차이는 다음 예에서 확인할 수 있습니다.

  1. 매트릭스를 생성합니다.

     >>> A = numpy.matrix(numpy.ones((3, 3)))
     >>> A
     matrix([[ 1.,  1.,  1.],
             [ 1.,  1.,  1.],
             [ 1.,  1.,  1.]])
    
  2. numpy.arrayA카피를 수정하고 있기 때문에 동작하지 않습니다.

     >>> numpy.array(A)[2] = 2
     >>> A
     matrix([[ 1.,  1.,  1.],
             [ 1.,  1.,  1.],
             [ 1.,  1.,  1.]])
    
  3. numpy.asarrayA. A그 자체입니다.

     >>> numpy.asarray(A)[2] = 2
     >>> A
     matrix([[ 1.,  1.,  1.],
             [ 1.,  1.,  1.],
             [ 2.,  2.,  2.]])
    

그 차이는 및 매뉴얼에 명확하게 기재되어 있습니다.차이는 인수 목록에 있으므로 이러한 파라미터에 따라 함수의 액션이 달라집니다.

함수 정의는 다음과 같습니다.

numpy.array(object, dtype=None, copy=True, order=None, subok=False, ndmin=0)

그리고.

numpy.asarray(a, dtype=None, order=None)

다음 인수는 전달될 수 있는 인수입니다.array 아니라 asarray된 바와 : as뉴 as as as as as as as as as음음음음음음음음음 as as as as as as as as as as as

copy : bool 옵션 If true(기본값)경우 오브젝트가 복사됩니다.그렇지 않으면 복사는 다음과 같은 경우에만 이루어집니다.__array__시퀀스인 order 을 충족하기 가 반환됩니다.obj는 dtype, order 등입니다.

subok : bool, 옵션의 If True일 경우 서브클래스가 통과됩니다.그렇지 않을 경우 반환되는 어레이는 강제로 기본 클래스 어레이가 됩니다(기본값).

ndmin : int, 옵션 결과 배열에 필요한 최소 치수 수를 지정합니다.이 요건을 충족하기 위해 필요에 따라 모양을 미리 설정합니다.

asarray(x)~와 array(x, copy=False)

asarray(x)「」를 확실히 .x는 다른 작업이 수행되기 전에 배열이 됩니다. ifx는 이미 어레이이기 때문에 복사는 행해지지 않습니다.장황한 퍼포먼스에 영향을 주지 않습니다.

에서는 '있다'는 것을 보증하는 하겠습니다.x먼저 배열로 변환됩니다.

def mysum(x):
    return np.asarray(x).sum()

다음은 그 차이를 증명할 수 있는 간단한 예입니다.

주요 차이점은 배열이 원본 데이터의 복사본을 만들며 다른 개체를 사용하여 원본 배열의 데이터를 수정할 수 있다는 것입니다.

import numpy as np
a = np.arange(0.0, 10.2, 0.12)
int_cvr = np.asarray(a, dtype = np.int64)

배열(a)의 내용은 그대로 유지되며, 원본 배열의 내용을 변경하지 않고 다른 개체를 사용하여 데이터에 대한 작업을 수행할 수 있습니다.

이 두 에 대해 알아보겠습니다.np.array() ★★★★★★★★★★★★★★★★★」np.asarray()예를 들어 다음과 같습니다.

np.array(): 입력 데이터(리스트, 태플, 배열 또는 기타 시퀀스 유형)를 ndarray로 변환하고 입력 데이터를 기본적으로 복사합니다.

np.asarray(): 입력 데이터를 ndarray로 변환하지만 입력이 이미 ndarray이면 복사하지 않습니다.

#Create an array...

arr = np.ones(5);  # array([1., 1., 1., 1., 1.])
#Now I want to modify `arr` with `array` method. Let's see...

arr = np.array(arr)[3] = 200;  # array([1., 1., 1., 1., 1.])

의 no no of of of of of of of of of of of of of of of of of of of of of of of of of of of 의 복사본을 하고 있기 때문에 은 변경되지 않습니다.arr.

이번에는 아, 아, 아, 아, 아, 아, 하다를 수정해 보세요.arrasarray()★★★★★★ 。

arr = np.asarray(arr)[3] = 200;  # array([1., 200, 1., 1., 1.])

현재 원래 어레이로 작업하고 있기 때문에 이 어레이에서 변경이 발생합니다.

언급URL : https://stackoverflow.com/questions/14415741/what-is-the-difference-between-np-array-and-np-asarray

반응형