Programming/Python

Python Numpy 3강 - arange, zeros, ones

상맹 2021. 10. 20. 16:43
반응형

Numpy에 존재하는 다양한 함수들

 

NumPy 다양한 함수들 - Codetorial

NumPy의 다양한 함수의 사용법에 대해 소개합니다.

codetorial.net


arange - 임의의 데이터를 만들 때 사용

# 넘파이가 가지고 있는 함수
import numpy as np

arr1 = np.arange(10)
print(arr1[:6])
print("="*50)

arr2 = np.arange(5,10)
print(arr2)
print("="*50)

arr3 = np.arange(1,10,2)
print(arr3)
print("="*50)

arr4 = np.arange(1,11)
print(arr4)
print("="*50)

arr5 = arr4.reshape((2,-1)) # 2차원 변환
print(arr5)
print("="*50)

arr6 = arr5.reshape(-1) 
arr7 = arr5.flatten()
print(arr6)
print("="*50)

print(arr7)
print("="*50)


# [0,0,0,0,0]
arr1 = [0]*5
print(arr1)
print(type(arr1))
print("="*50)

arr2 = np.zeros(5)
print(arr2)
print(type(arr2))
print("="*50)

arr3 = np.zeros((3,3))
print(arr3)
print("="*50)

arr4 = arr3.flatten()
print(arr4)
print("="*50)

arr5 = np.ones(20)
print(arr5)

 


# [1,1,1,1,0,0]
arr1 = np.ones(4)
arr2 = np.zeros(2)
print(arr1)
print(arr2)
print("="*50)
# arr3 = arr1 + arr2
# print(arr3)

list1 = [1,2,3]
list2 = [4,5,6]
list3 = list1 + list2
print(list3)

list4 = np.array(list1)
list5 = np.array(list2)
print(list4)
print(list5)

list6 = list4 + list5
print("="*50)
print(list6)

# 넘파이는 +로 배열을 합칠수 없다.
print(type(arr1))
print(type(list1))
print(type(list4))


# ndarray를 합치는 방법은 +가 아니라 concatenate
arr1 = np.ones(4)
arr2 = np.zeros(2)

conc_arr = np.concatenate((arr1,arr2))
print(conc_arr)


# axis 0이면 행, 1이면 열
arr1 = np.arange(1,13)
print(arr1)
arr2 = arr1.reshape((3,-1))
print(arr2)
# print(arr2[1,2])
print(arr2.sum())
print(arr2.sum(axis=0))
print(arr2.sum(axis=1))


arr1 = np.array([[1,2],[3,4]])
print(arr1)
print("="*50)

arr2 = np.array([[5,6],[7,8]])
print(arr2)
print("="*50)

v_arr = np.vstack((arr1,arr2)) # 두개의 array를 수직으로 합치는 것
h_arr = np.hstack((arr1,arr2)) # 두개의 array를 수평으로 합치는 것
print(v_arr)
print("="*50)
print(h_arr)

c_arr = np.concatenate((arr1,arr2)) # 두개의 array를 연결하는것
print("="*50)
print(c_arr)

d = v_arr.flatten()
print("="*50)
print(d)


# stack은 쌓아 올리다. (연산이 아니다)
bream_length = [25.4, 26.3, 26.5, 29.0, 29.0, 29.7, 29.7, 30.0, 30.0, 30.7, 31.0, 31.0,
                31.5, 32.0, 32.0, 32.0, 33.0, 33.0, 33.5, 33.5, 34.0, 34.0, 34.5, 35.0,
                35.0, 35.0, 35.0, 36.0, 36.0, 37.0, 38.5, 38.5, 39.5, 41.0, 41.0]

# 도미의 무게
bream_weight = [242.0, 290.0, 340.0, 363.0, 430.0, 450.0, 500.0, 390.0, 450.0, 500.0, 475.0, 500.0,
                500.0, 340.0, 600.0, 600.0, 700.0, 700.0, 610.0, 650.0, 575.0, 685.0, 620.0, 680.0,
                700.0, 725.0, 720.0, 714.0, 850.0, 1000.0, 920.0, 955.0, 925.0, 975.0, 950.0]

arr_length = np.array(bream_length)
arr_weight = np.array(bream_weight)

# 2차원 배열로 만들어라
# [
#  [25.4,242.0],
#  [26.3,290.0]
# ]

temp1 = np.vstack((arr_length, arr_weight))
print(temp1)
print("="*50)

temp2 = np.hstack((arr_length, arr_weight))
print(temp2)
print("="*50)

temp3 = np.concatenate((arr_length, arr_weight))
print(temp3)
print("="*50)


arr1 = np.array([
                 [25.4, 26.3],
                 [242, 290],
                 [10.4, 15.3]
])

print(arr1.transpose())

arr2 = np.array([
  [
   [25, 26],
   [8, 20],
  ],
  [
   [3, 4],
   [10, 13]
  ]
])

print(arr2.transpose())

# 데이터 정제
# 1. vstack으로 합치고, 2. transpose 한다.

# transpose() : 열의 좌표값, 행의 좌표값을 바꾼다 / 행 과 열을 치환한다. / (a,b) → (b,a)
# 2차원 - Matrix(n1,n2)
# 각각의 행에서 같은 index끼리 합친다.
# Tensor는 세로방향으로 같은 index를 합친다.


arr_length = np.array(bream_length)
arr_weight = np.array(bream_weight)
bream_data = np.vstack((arr_length, arr_weight))

print(bream_data)
print("="*50)
print(bream_data.transpose())

column_stack 사용하기 : vstack과 transpose를 사용하였을 때와 동일한 결과가 나타난다.

# 데이터 정제
# 1. column_stack()
# 여러 1차원 array를 같은 인덱스끼리 합친다.

arr_length = np.array(bream_length)
arr_weight = np.array(bream_weight)

# bream_data = np.vstack((arr_length, arr_weight))
# print(bream_data)

bream_data = np.column_stack((arr_length, arr_weight))
print(bream_data)

# print(bream_data.transpose())


<시각화>

 

import matplotlib.pyplot as plt

# plt.scatter(bream_length, bream_weight)
plt.scatter(bream_data[:,0],bream_data[:,1])
plt.xlabel("길이")
plt.ylabel("무게")
plt.show()

반응형