Python 빅데이터 공부

Python(Big Data) - ndArray 다차원 배열 (numpy)

SoSweetStrawberry 2022. 8. 22. 19:51
반응형

ndArray 다차원 배열 (배열 -> 크기가 고정)

(한가지 자료형으로 이루어져있어야함)


< numpy 객체 >

import numpy as np
a = np.array([                  #np.array -> 컬렉션을 배열로 만들어줌
                [1,2,3],
                [4,5,6]
            ])
print(a.size)      # 원소의 갯수
print(a.ndim)      # 몇 차원? ( [ [] ] list안의 list-> 2차원)
print(a.shape)     # 2행 3열
print(a.itemsize)  # 원소 하나의 크기(bit)
print(a.data)      # 저장된 주소
6
2
(2, 3)
4
<memory at 0x000001E1536F3790>

 

< numpy 원소 타입 확인>

~.dtype.name  

boo_array = np.array([True,False,False])
boo_array.dtype.name  

complex_array = np.array([1+2j,3+2j,5+2j],dtype=complex)   #복소수 (실수+소수)
complex_array.dtype.name
'bool'

'complex128'

 

< np.zeros((r,c)) 다차원 배열 생성 > 

np.zeros((3,3))  # 0들로 구성된 3행 3열
np.ones((3,3))  # 1들로 구성된 3행 3열
array([[0., 0., 0.],
       [0., 0., 0.],
       [0., 0., 0.]])

 

< flatten() - 다차원 1차원으로 만들기 >

a = np.zeros((3,3))
print(a)
a.flatten()  # 1차원으로
[[0. 0. 0.]
 [0. 0. 0.]
 [0. 0. 0.]]
 
array([0., 0., 0., 0., 0., 0., 0., 0., 0.])

< numpy.arange - 간편 배열 생성 >

np.arange(3,10,1.5)   #start, end , step
array([3. , 4.5, 6. , 7.5, 9. ])

 

< reshape - 다 차원 배열 생성하기 >

a = np.arange(0,12)
print(a)

b= a.reshape(3,4)   #비파괴형   #3행 4열
b
[ 0  1  2  3  4  5  6  7  8  9 10 11]
 
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11]])

 

< linspace - 정한 간격으로 값 추출 후 배열 만들기 >

# 0~9 구간을 7개 수를 일정한 간격으로 추출하려면? linearly spaced values
np.linspace(0,10,7)
#np.linspace(0,10,7,endpoint=False)  # 마지막 숫자 10은 포함하지 않는다
array([ 0.        ,  1.66666667,  3.33333333,  5.        ,  6.66666667,
        8.33333333, 10.        ])

 

< np.random - 랜덤 숫자>

a = np.random.random(8).reshape((2,4))    #랜덤 숫자 8개를 2행 4열 형태로
a
array([[0.87861829, 0.77451069, 0.27540366, 0.38975563],
       [0.37293004, 0.39192104, 0.66091684, 0.21026256]])

 


함수 안쓰고 ( reshape ) -> 랜덤 숫자를 받아 2행 3열의 다차원 배열로 만들기

# Quiz_1   2행 3열
import random

a = np.zeros((2,3)) 

for row in  range(2):
    for col in range(3):
        #a[row][col] = random.randint(0,20)
        a[row,col] = random.randint(0,20)
    
a
array([[16.,  6.,  8.],
       [19., 15., 15.]])
반응형