Numpy 얘기 좀 하자.array에서 [:]와 [::]의 차이점은 무엇입니까?

8634 단어 Numpyarray[:][::]
[:]와 [::]의 차이는 매우 크다. 잘 쓰면 시간을 절약할 수 있다. 다음은 실례를 들어 분석한다.

array([:])


>>> import numpy as np
>>>
>>> x=np.array([1,2,3,4,5,6,7,8,9,10,11,12])
>>> print(x[1:5])# index 1~5 , 
[2 3 4 5]
>>> print(x[3:])# index=3 , index=3
[ 4  5  6  7  8  9 10 11 12]
>>> print(x[:9])# index=9 , index=9
[1 2 3 4 5 6 7 8 9]
>>> print(x[1:-2])# index=1 2 index 
[ 2  3  4  5  6  7  8  9 10]
>>> print(x[-9:-2])# 9 index 2 index , 
[ 4  5  6  7  8  9 10]

array([::])


>>> print(x[1::3])# index=1 , 3
[ 2  5  8 11]
>>> print(x[::3])# index=0 , 3
[ 1  4  7 10]
>>> print(x[3::])# [3:] 
[ 4  5  6  7  8  9 10 11 12]
>>> print(x[::-1])# , index , 1
[12 11 10  9  8  7  6  5  4  3  2  1]
>>> print(x[::-3])# , index , 3
[12  9  6  3]
>>> print(x[7:2:-1])# index=2( ) index=7 
[8 7 6 5 4]
이 방면의 문제에 부딪혀서 이해하지 못했습니다. 차라리 해 보면 알 수 있습니다.
보충: Numpy.array () 상세, np.array와 np.asarray 분석,np.array와 np.ndarry의 차이
numpy를 기록해 주세요.array()의 상세한 사용법 및 np.asarray ()와 np.ndarray () 의 차이점.

1. Numpy.array () 상세 정보


이 함수의 작용은 한마디로 수조를 만드는 데 쓰인다.

1.1 함수 형식


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

1.2 매개변수 상세 정보

object: 필수 매개변수, 유형은array_like, 네 가지 유형이 있습니다: 그룹, 그룹 인터페이스를 공개하는 모든 대상, __array__방법은 그룹의 대상이나 모든 (끼워넣기) 서열을 되돌려줍니다.np.array () 의 역할은 일정한 요구에 따라object를 수조로 바꾸는 것이다.dtype: 수조 요소의 유형을 나타내는 파라미터를 선택할 수 있습니다.만약 제시되지 않는다면, 형식은 서열의 대상을 유지하는 데 필요한 최소 형식으로 확정됩니다.주:이 인수는'upcast'the array에만 사용할 수 있습니다.For downcasting, use the .astype(t) method.copy: 옵션 매개 변수, 유형은bool값입니다.true (기본값) 이면 객체를 복사합니다.그렇지 않으면 다음 세 가지 경우에만 복사본이 반환됩니다. (1).if __array__ returns a copy;(2). if obj is a nested sequence;(3). if a copy is needed to satisfy any of the other requirements (dtype, order, etc.)order :{‘K', ‘A', ‘C', ‘F'},optional .패턴의 메모리 레이아웃을 지정합니다.이 매개 변수를 나는 지금까지 구체적인 용법을 만난 적이 없다. 이 말은 내가 할 줄 모르기 때문에 여기서 생략한다는 뜻이다.subok: 옵션 매개 변수, 유형은bool값입니다.True이면 하위 클래스가 전달되고 그렇지 않으면 반환된 그룹은 기본 클래스 그룹(기본값)으로 강제됩니다.또는, True:object를 사용하는 내부 데이터 형식,False:object 그룹을 사용하는 데이터 형식입니다.ndmin: 선택 가능한 매개 변수, 유형은 int형입니다.결과 그룹이 가져야 할 최소 비트를 지정합니다.
객체 복귀out: 지정한 요구를 충족시키는 그룹 대상을 출력합니다.

1.3 구체적인 사용법


간단한 예

import numpy as np
 
arr01 = np.array([1,2,3])
print(arr01) #[1 2 3]
print(type(arr01))  #<class 'numpy.ndarray'>
print(arr01.dtype)  #int32
 
#Upcasting
arr02 = np.array([1.,2.,3.])
print(arr02) #[1. 2. 3.]
print(arr02.dtype)  #float64
 
#More than one dimension:
arr03 = np.array([[1,2],[3,4]])
print(arr03)
"""
[[1 2]
 [3 4]]
"""
dtype 매개 변수 사용 예

import numpy as np
 
# 
DYX= np.array([1,2,3],dtype = complex)
print(DYX) #[1.+0.j 2.+0.j 3.+0.j]
print(DYX.dtype)  #complex128
 
# :
HXH = np.array([(1,2),(3,4)],dtype=[('a','<i4'),('b','<i8')])
print(HXH)  #[(1, 2) (3, 4)]
# , 。
print(HXH["a"]) #[1 3]
print(HXH["b"])  #[2 4]
print(HXH.dtype)  #[('a', '<i4'), ('b', '<i8')]
print(HXH["a"].dtype) #int32
print(HXH["b"].dtype) #int64
 
TSL = np.array([(1,2,3),(4,5,6)],dtype=[("a","i"),("b","i"),("c","i")])
print(TSL["a"]) #[1 4]
print(TSL["a"].dtype)  #int32
상기 코드 중numpy의 데이터 유형은 바이두에서
subok 매개 변수 사용 예

import numpy as np
 
DYX = np.array(np.mat('1 2; 3 4'))
# subok , False
print(DYX)
# 
print(type(DYX))  #<class 'numpy.ndarray'>
"""
[[1 2]
 [3 4]]
"""
 
HXH = np.array(np.mat('1 2; 3 4'), subok=True)
print(HXH)
# 
print(type(HXH))  #<class 'numpy.matrixlib.defmatrix.matrix'>
"""
[[1 2]
 [3 4]]
"""
앞에서 subok에 대한 설명은 다음과 같다. "True라면 하위 클래스가 전달되고, 그렇지 않으면 되돌아오는 클래스는 기본 클래스 (기본값) 로 강제됩니다."
위의 코드에서'np.mat('12;34')'은 하위 클래스이고 행렬 형식입니다.DYX = np.array(np.mat('12;3, 4')에서 subok은 False이고 되돌아오는 수조 유형은 기본 수조로 강제되기 때문에 DYX의 유형은 , 수조입니다.HXH = np.array(np.mat('12;3, 4'),subok=True)에서 subok는 True이고 하위 클래스가 전달되기 때문에 HXH의 유형은 행렬.
이것이 바로 차이점이다.
ndmin 매개 변수 사용 예

import numpy as np
 
DYX = np.array([1,2,3],ndmin=0)
print(DYX,DYX.shape) #[1 2 3] (3,)
 
HXH = np.array([1,2,3],ndmin=1)
print(HXH,HXH.shape) #[1 2 3] (3,)
 
TSL = np.array([1,2,3],ndmin=2)
print(TSL,TSL.shape) #[[1 2 3]] (1, 3)
다른 두 개의 매개 변수인copy와order를 나는 지금까지 만난 적이 없기 때문에 당분간 표시하지 않는다.누가 이 두 개의 매개 변수 사용법을 소개하는 블로그를 가지고 있습니까?

2. Asarray와 Array의 분석


Numpy.Asaray의 용법은 더 이상 군더더기 없이 양자의 차이를 소개한다.

2.1 object 대상이 일반 교체 시퀀스일 때


import numpy as np
 
data = [1,1,1]
print(type(data)) #<class 'list'>  
arr_ar = np.array(data)
arr_as = np.asarray(data)
 
# 
print(arr_ar) #[1 1 1]
print(arr_as) #[1 1 1]
 
data[1]=2
# arr_ar arr_as 
print(arr_ar) #[1 1 1]
print(arr_as) #[1 1 1]
 
# data [1, 2, 1]
# arr_ar arr_as 
arr_ar[1]=3
print(data) #[1, 2, 1]
arr_as[1]=3
print(data)  #[1, 2, 1]
매개 변수의 대상이 일반적인 교체 서열일 때 asarray와array는 차이가 없음을 알 수 있다.

2.2 object 객체가 ndarray 객체일 때


import numpy as np 
data = np.ones((3,))
#print(type(data)) #<class 'numpy.ndarray'>  
arr_ar = np.array(data)
arr_as = np.asarray(data)
 
print(arr_ar) #[1. 1. 1.]
print(arr_as) #[1. 1. 1.]
 
"""
 。 ,
np.array() ,
 np.asarray() 
"""
data[1]=2
print(arr_ar) #[1. 1. 1.]
print(arr_as) #[1. 2. 1.]  !!!
 
"""
 , array , 
 asarray , 
"""
# data=[1. 2. 1.]
arr_ar[2]=3
print(data)  #[1. 2. 1.]
arr_as[2]=3
print(data)  #[1. 2. 3.]
요약:
동일점:array와asarray는 모두 수조를 ndarray 대상으로 전환할 수 있다.
구별: 매개 변수가 일반 수조일 때 두 함수의 결과는 같다.파라미터 자체가 ndarray 형식일 때,array는 파라미터의 복사본으로 ndarray 대상을 새로 만들지만,asarray는 새로 만들지 않고 파라미터와 같은 메모리를 공유합니다.중요한 것은 바로 이 공유 메모리다.

3.Numpy.ndarray()


이것은 최근 한 항목에서 본 용법입니다. 용법을 검색해 보니 stackoverflow에서만 "What is the difference between ndarray and array in numpy?"라는 질문을 보았습니다.
주소는 다음과 같습니다. https://stackoverflow.com/questions/15879315/what-is-the-difference-between-ndarray-and-array-in-numpy
numpy.array는 ndarray를 만드는 편리한 함수일 뿐입니다.그것 자체는 같은 종류가 아니다.그가 말한 것도numpy를 사용할 수 있다.ndarray에서 그룹을 만들지만, 이것은 추천하는 방법이 아닙니다.numpy.ndarray () 는 클래스이고numpy입니다.array () 는 ndarray를 만드는 방법/함수입니다.

numpy docs에서 ndarray 클래스에서 그룹을 만들려면 인용된 두 가지 방식으로 할 수 있습니다.


(1).using array(), zeros() or empty() methods: Arrays should be constructed using array, zeros or empty (refer to the See Also section below). The parameters given here refer to a low-level method (ndarray(…)) for instantiating an array.[1-array (),zeros () 또는empty () 방법을 사용합니다. 수조는array,zeros () 또는empty () 구조를 사용해야 합니다. 여기에 제시된 매개 변수는 실례화된 수조에 사용되는 저급 방법 (ndarray (...) 을 인용합니다.]
(2).from ndarray class directly: There are two modes of creating an array using new: If buffer is None, then only shape, dtype, and order are used. If buffer is an object exposing the buffer interface, then all keywords are interpreted.[2-ndarray 클래스에서: new를 사용하여 그룹을 만드는 두 가지 모드가 있습니다. 만약에 버퍼가 None이라면shape, dtype,order만 사용합니다. 버퍼가 버퍼 인터페이스를 공개하는 대상이라면 모든 키워드를 설명합니다.]
그러니까 솔직하고 실용적이야.array () 하자.
이상의 개인적인 경험으로 여러분께 참고가 되었으면 좋겠습니다. 또한 많은 응원 부탁드립니다.

좋은 웹페이지 즐겨찾기