1차원 배열 생성
1차원 배열 생성_Vector1_array 함수
''' 배열생성 1차원 배열: 벡터(vector) 가. np.array(리스트) ''' import numpy as np # 1. 벡터 생성 list_value= [10,20,30] vector_value = np.array(list_value) print("list_value:", list_value, type(list_value)) # [10, 20, 30] <class 'list'> print("vector_value:", vector_value, type(vector_value)) # [10 20 30] <class 'numpy.ndarray'>
* 출력 화면

1차원 배열 생성_Vector2_array 함수2_list와 vector 차이점
''' 배열생성 1차원 배열: 벡터(vector) 가. np.array(리스트) ''' import numpy as np # 1. 벡터 생성 list_value= [10,20,30] vector_value = np.array(list_value) print("list_value:", list_value, type(list_value)) # [10, 20, 30] <class 'list'> print("vector_value:", vector_value, type(vector_value)) # [10 20 30] <class 'numpy.ndarray'> # 2. 파이썬의 리스트 vs 벡터 # 가. 벡터는 자동으로 형변환이 된다. ==> 반드시 동일한 타입만 저장 가능하다. list_value= [10,20,30,"A"] list_value= [10,20,30,4.] print(list_value) vector_value = np.array(list_value) print(vector_value) # 나. 벡터화 연산: 벡터와 스칼라 연산 list_value= [10,20,30] result = list_value * 2 # [10, 20, 30, 10, 20, 30] print("파이썬의 결과:", result) vector_value = np.array(list_value) result = vector_value * 2 # [10 20 30] * 2 = [20 40 60] , 벡터화 연산(요소간 연산, 매우중요한 특징) print("벡터 결과:", result) # 다. 벡터화 연산: 벡터와 벡터 연산 list_value= [90,80,70] list_value2= [10,20,30] result = list_value + list_value2 # [90, 80, 70, 10, 20, 30] print(result) vector_value = np.array(list_value) vector_value2 = np.array(list_value2) result = vector_value + vector_value2 # [100 100 100],요소간 연산 print(result) # 라. 얕은 복사(주소값복사) 와 깊은 복사(실제값복사) list_value= [90,80,70] s = list_value[:] # 파이썬의 슬라이싱은 깊은복사, list(), .copy() list_value[0]=900 print(list_value) print(s) list_value= [10,20,30] vector_value = np.array(list_value) s = vector_value[:] # 벡터의 슬라이싱은 얕은복사 ==> 성능 때문에 vector_value[0]=100 print(vector_value) print(s) # 벡터의 깊은복사(실제값복사) 방법 list_value= [10,20,30] vector_value = np.array(list_value) # new_vector_value = vector_value.copy() new_vector_value = np.copy(vector_value) vector_value[0]= 100 print(vector_value) # [100 20 30] print(new_vector_value) # [10 20 30] , 깊은복사이기 때문에 수정 안됨.
* 출력 화면

1차원 배열 생성_Vector3_array 함수3_속성
''' 배열생성 1차원 배열: 벡터(vector) 가. np.array(리스트) 나. 속성 print(dir(변수)) ''' import numpy as np # 1. 벡터 생성 list_value= [10,20,30] vector_value = np.array(list_value) print("vector_value:", vector_value, type(vector_value)) # [10 20 30] <class 'numpy.ndarray'> print("벡터의 차원크기:", vector_value.ndim) # 1 print("벡터의 형상(모양):", vector_value.shape) # (3,) # 매우 중요하다. print("벡터의 요소갯수:", vector_value.size) # 3 print("벡터의 요소타입:", vector_value.dtype) # int32 # print(dir(np)) # print(dir(vector_value)) ''' ['T', '__abs__', '__add__', '__and__', '__array__', '__array_finalize__', '__array_function__', '__array_interface__', '__array_prepare__', '__array_priority__', '__array_struct__', '__array_ufunc__', '__array_wrap__', '__bool__', '__class__', '__class_getitem__', '__complex__', '__contains__', '__copy__', '__deepcopy__', '__delattr__', '__delitem__', '__dir__', '__divmod__', '__dlpack__', '__dlpack_device__', '__doc__', '__eq__', '__float__', '__floordiv__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__iand__', '__ifloordiv__', '__ilshift__', '__imatmul__', '__imod__', '__imul__', '__index__', '__init__', '__init_subclass__', '__int__', '__invert__', '__ior__', '__ipow__', '__irshift__', '__isub__', '__iter__', '__itruediv__', '__ixor__', '__le__', '__len__', '__lshift__', '__lt__', '__matmul__', '__mod__', '__mul__', '__ne__', '__neg__', '__new__', '__or__', '__pos__', '__pow__', '__radd__', '__rand__', '__rdivmod__', '__reduce__', '__reduce_ex__', '__repr__', '__rfloordiv__', '__rlshift__', '__rmatmul__', '__rmod__', '__rmul__', '__ror__', '__rpow__', '__rrshift__', '__rshift__', '__rsub__', '__rtruediv__', '__rxor__', '__setattr__', '__setitem__', '__setstate__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', '__truediv__', '__xor__', 'all', 'any', 'argmax', 'argmin', 'argpartition', 'argsort', 'astype', 'base', 'byteswap', 'choose', 'clip', 'compress', 'conj', 'conjugate', 'copy', 'ctypes', 'cumprod', 'cumsum', 'data', 'diagonal', 'dot', 'dtype', 'dump', 'dumps', 'fill', 'flags', 'flat', 'flatten', 'getfield', 'imag', 'item', 'itemset', 'itemsize', 'max', 'mean', 'min', 'nbytes', 'ndim', 'newbyteorder', 'nonzero', 'partition', 'prod', 'ptp', 'put', 'ravel', 'real', 'repeat', 'reshape', 'resize', 'round', 'searchsorted', 'setfield', 'setflags', 'shape', 'size', 'sort', 'squeeze', 'std', 'strides', 'sum', 'swapaxes', 'take', 'tobytes', 'tofile', 'tolist', 'tostring', 'trace', 'transpose', 'var', 'view'] '''
* 출력 화면

1차원 배열 생성_Vector4_랜덤 함수
''' 배열생성 1차원 배열: 벡터(vector) 가. np.array(리스트) 나. 랜덤함수 np.random.random() : [0.0 1.0) 범위값 반환 np.random.random(size) : [0.0 1.0) 범위값에서 size만큼 반환 np.random.rand() : 0~1사이의 균등분포에서 반환, 뽑힐 확률 동일 np.random.randn() : 정규분포에서 반환, 평균이 0이고 표준편차 1 ==> N(0,1) np.random.randint(low, high=None) : high 미지정시 범위: [0 low) ==> 0<= 값 <low np.random.randint(low, high) : [low high) ==> low<= 값 <high ''' import numpy as np # 랜덤값 고정 ==> seed 고정 # np.random.seed(1234) arr = np.random.random() # [0.0 1.0) ==> 범위 0.0 <= <1.0 print("random() 함수:", arr, type(arr)) # <class 'float'> arr = np.random.random(3) # [0.0 1.0) ==> 범위 0.0 <= <1.0 print("random(size) 함수:", arr, type(arr)) # <class 'numpy.ndarray'> arr = np.random.rand() # [0.0 1.0) ==> 범위 0.0 <= <1.0 print("rand() 함수:", arr, type(arr)) # <class 'float'> arr = np.random.rand(5) # [0.0 1.0) ==> 범위 0.0 <= <1.0 print("rand(size) 함수:", arr, type(arr)) # <class 'numpy.ndarray'> arr = np.random.randn() # [0.0 1.0) ==> 범위 0.0 <= <1.0 print("randn() 함수:", arr, type(arr)) # <class 'float'> arr = np.random.randn(7) # [0.0 1.0) ==> 범위 0.0 <= <1.0 print("randn(size) 함수:", arr, type(arr)) # <class 'numpy.ndarray'> arr = np.random.randint(5) # 0 ~ 4까지의 랜덤값 반환 print("randint(low) 함수:", arr, type(arr)) # <class 'int'> arr = np.random.randint(1,3) # 1<= < 3까지의 랜덤값 반환 print("randint(low, high) 함수:", arr, type(arr)) # <class 'int'> arr = np.random.choice(["A","B","C"]) print("choice()", arr) list_value=[5,2,56,67] np.random.shuffle(list_value) print(list_value) # print(dir(np.random)) ''' ['BitGenerator', 'Generator', 'MT19937', 'PCG64', 'PCG64DXSM', 'Philox', 'RandomState', 'SFC64', 'SeedSequence', '__RandomState_ctor', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__path__', '__spec__', '_bounded_integers', '_common', '_generator', '_mt19937', '_pcg64', '_philox', '_pickle', '_sfc64', 'beta', 'binomial', 'bit_generator', 'bytes', 'chisquare', 'choice', 'default_rng', 'dirichlet', 'exponential', 'f', 'gamma', 'geometric', 'get_state', 'gumbel', 'hypergeometric', 'laplace', 'logistic', 'lognormal', 'logseries', 'mtrand', 'multinomial', 'multivariate_normal', 'negative_binomial', 'noncentral_chisquare', 'noncentral_f', 'normal', 'pareto', 'permutation', 'poisson', 'power', 'rand', 'randint', 'randn', 'random', 'random_integers', 'random_sample', 'ranf', 'rayleigh', 'sample', 'seed', 'set_state', 'shuffle', 'standard_cauchy', 'standard_exponential', 'standard_gamma', 'standard_normal', 'standard_t', 'test', 'triangular', 'uniform', 'vonmises', 'wald', 'weibull', 'zipf'] '''
* 출력 화면

1차원 배열 생성_Vector5_zeros_ones
''' 배열생성 1차원 배열: 벡터(vector) 가. np.array(리스트) 나. 랜덤함수 np.random.random() : [0.0 1.0) 범위값 반환 np.random.random(size) : [0.0 1.0) 범위값에서 size만큼 반환 np.random.rand() : 0~1사이의 균등분포에서 반환, 뽑힐 확률 동일 np.random.randn() : 정규분포에서 반환, 평균이 0이고 표준편차 1 ==> N(0,1) np.random.randint(low, high=None) : high 미지정시 범위: [0 low) ==> 0<= 값 <low np.random.randint(low, high) : [low high) ==> low<= 값 <high 다. np.zeros(size, dtype=타입) ==> 모든 요소를 0.0 으로 채운 벡터 반환 라. np.ones(size, dtype=타입) ==> 모든 요소를 1.0 으로 채운 벡터 반환 마. np.empty(size, dtype=타입) ==> 임의의 값으로 초기화 됨, 값이 작으면 대부분이 1로 설정됨. 임의의 값 초기화 확인 위해서는 size 늘려서 실습한다. 마. np.full(size, 값, , dtype=타입) ==> 지정된 값으로 초기화 됨 ''' import numpy as np arr = np.zeros(5) print("zeros(size):" , arr) # [0. 0. 0. 0. 0.] arr = np.zeros(5, dtype=int) # dtype=np.int32 print("zeros(size, dtype=int):" , arr) # [0 0 0 0 0] arr = np.ones(5) print("ones(size):" , arr) # [1. 1. 1. 1. 1.] arr = np.ones(5, dtype=int) # dtype=np.int32 print("ones(size, dtype=int):" , arr) # [1 1 1 1 1] arr = np.empty(5) print("empty(size):" , arr) # arr = np.empty(5, dtype=int) # dtype=np.int32 print("empty(size, dtype=int):" , arr) arr = np.full(4, 100, dtype=int) # dtype=np.int32 print("full(size, 값, , dtype=타입):" , arr) # [100 100 100 100]
* 출력 화면

1차원 배열 생성_Vector6_arange 함수
''' 배열생성 1차원 배열: 벡터(vector) 가. np.array(리스트) 나. 랜덤함수 np.random.random() : [0.0 1.0) 범위값 반환 np.random.random(size) : [0.0 1.0) 범위값에서 size만큼 반환 np.random.rand() : 0~1사이의 균등분포에서 반환, 뽑힐 확률 동일 np.random.randn() : 정규분포에서 반환, 평균이 0이고 표준편차 1 ==> N(0,1) np.random.randint(low, high=None) : high 미지정시 범위: [0 low) ==> 0<= 값 <low np.random.randint(low, high) : [low high) ==> low<= 값 <high 다. np.zeros(size, dtype=타입) ==> 모든 요소를 0.0 으로 채운 벡터 반환 라. np.ones(size, dtype=타입) ==> 모든 요소를 1.0 으로 채운 벡터 반환 마. np.empty(size, dtype=타입) ==> 임의의 값으로 초기화 됨, 값이 작으면 대부분이 1로 설정됨. 임의의 값 초기화 확인 위해서는 size 늘려서 실습한다. 마. np.full(size, 값, , dtype=타입) ==> 지정된 값으로 초기화 됨 바. np.arange([start],stop[,step], dtype=타입) ==> 파이썬의 range()함수 유사하다. ''' import numpy as np arr = np.arange(5) # np.arange(stop) ==> [0 5)범위의 벡터 반환 print("arange(stop):", arr) # [0 1 2 3 4] arr = np.arange(1,5) # np.arange(start, stop) ==> [1 5)범위의 벡터 반환 print("arange(start, stop):", arr) # [1 2 3 4] arr = np.arange(1,10,2) # np.arange(start, stop, step) ==> [1 10)범위의 2step 벡터 반환 print("arange(start, stop, step):", arr) # [1 3 5 7 9] # 실수값 반환 arr = np.arange(5, dtype=np.float32) # np.arange(stop, dtype=타입) ==> [0 5)범위의 벡터 반환 print("arange(stop):", arr) # [0. 1. 2. 3. 4.] arr = np.arange(5.) print("arange(stop):", arr) # [0. 1. 2. 3. 4.]
* 출력 화면

1차원 배열 생성_Vector7_linspace 함수
''' 배열생성 1차원 배열: 벡터(vector) 가. np.array(리스트) 나. 랜덤함수 np.random.random() : [0.0 1.0) 범위값 반환 np.random.random(size) : [0.0 1.0) 범위값에서 size만큼 반환 np.random.rand() : 0~1사이의 균등분포에서 반환, 뽑힐 확률 동일 np.random.randn() : 정규분포에서 반환, 평균이 0이고 표준편차 1 ==> N(0,1) np.random.randint(low, high=None) : high 미지정시 범위: [0 low) ==> 0<= 값 <low np.random.randint(low, high) : [low high) ==> low<= 값 <high 다. np.zeros(size, dtype=타입) ==> 모든 요소를 0.0 으로 채운 벡터 반환 라. np.ones(size, dtype=타입) ==> 모든 요소를 1.0 으로 채운 벡터 반환 마. np.empty(size, dtype=타입) ==> 임의의 값으로 초기화 됨, 값이 작으면 대부분이 1로 설정됨. 임의의 값 초기화 확인 위해서는 size 늘려서 실습한다. 마. np.full(size, 값, , dtype=타입) ==> 지정된 값으로 초기화 됨 바. np.arange([start],stop[,step], dtype=타입) ==> 파이썬의 range()함수 유사하다. 사. np.linspace(start, stop, size) ==> 시각화할때 많이 사용됨. ''' import numpy as np arr = np.linspace(1,10,10) print("np.linspace(1,10,10):", arr) # [ 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.] arr = np.linspace(1,10,10,endpoint=False) print("np.linspace(1,10,10):", arr) # [1. 1.9 2.8 3.7 4.6 5.5 6.4 7.3 8.2 9.1] arr = np.linspace(0,1,11) print("np.linspace(0,1,11):", arr) # [0. 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1. ]
* 출력 화면

출처
+ 강의 교재
'AI Bootcamp > Numpy' 카테고리의 다른 글
[Numpy] 1일차_1차열 배열 추가 및 삭제 (0) | 2022.04.19 |
---|---|
[Numpy] 1일차_0차열 배열 (0) | 2022.04.19 |