Tuesday, November 17, 2015

numpy 모듈의 배열 생성과 출력

배열 생성하기
코드
import numpy as np

# array 함수를 사용하는 일반 python 리스트나 튜플을 이용
a = np.array([2,3,4])
print("배열 a = %s" %a)
print("배열 a의 각 요소의 데이터형 : %s " %a.dtype)
b = np.array([2.3, 3.3, 4.4])
print("배열 b = %s" %b)
print("배열 b의 각 요소의 데이터형 : %s " %b.dtype)
c = np.array([(1.5, 2, 3), (4, 5, 6)])
print("배열 C는 2차원 배열 : ")
print(c)

결과
배열 a = [2 3 4]
배열 a의 각 요소의 데이터형 : int32 
배열 b = [ 2.3  3.3  4.4]
배열 b의 각 요소의 데이터형 : float64 
배열 C는 2차원 배열 : 
[[ 1.5  2.   3. ]
 [ 4.   5.   6. ]]


배열을 생성할 때, 요소들은 모르고 크기만 지정하고 싶은 경우
코드
print("0으로 가득찬 배열 만들기")
print(np.zeros((3,4)))
print("1으로 가득찬 배열 만들기")
print(np.ones((2,5)))
print("랜덤값을 가지는 배열 만들기")
print(np.random.random((2,2)))

결과
0으로 가득찬 배열 만들기
[[ 0.  0.  0.  0.]
 [ 0.  0.  0.  0.]
 [ 0.  0.  0.  0.]]
1으로 가득찬 배열 만들기
[[ 1.  1.  1.  1.  1.]
 [ 1.  1.  1.  1.  1.]]
랜덤값을 가지는 배열 만들기
[[ 0.85682065  0.46422514]
 [ 0.00486033  0.48674269]]


arange함수를 이용해서 좀 더 간단히 배열 만들기
코드
print("0부터 10개")
print(np.arange(10))
print("3부터 10-1까지의 숫자를 2 간격으로")
print(np.arange(3,10,2))

결과
0부터 10개
[0 1 2 3 4 5 6 7 8 9]
3부터 10-1까지의 숫자를 2 간격으로
[3 5 7 9]


arange함수는 간격을 계산해서 입력해줘야 하는 단점이 있으므로 그럴 때에는 linspace 함수를 사용한다.
코드
print("0부터 2사이의 숫자를 9개")
print(np.linspace(0, 2, 9))

결과
0부터 2사이의 숫자를 9개
[ 0.    0.25  0.5   0.75  1.    1.25  1.5   1.75  2.  ]


다차원 배열과 모양
코드
print("1차원 배열 ")
array1 = np.arange(6)
print(array1)

print("2차원 배열(4행 3열)")
array2 = np.arange(12).reshape(4,3)
print(array2)

print("3차원 배열(높이가 3인 2행 4열 배열 = 2행 4열 배열 3개)")
array3 = np.arange(24).reshape(3, 2, 4)
print(array3)

print("만약 배열의 크기가 너무 커서, 다 표시될 수 없으면 자동으로 배열의 중간 값들을 생략한다.")
print(np.arange(10000).reshape(100,100))

결과
1차원 배열 
[0 1 2 3 4 5]
2차원 배열(4행 3열)
[[ 0  1  2]
 [ 3  4  5]
 [ 6  7  8]
 [ 9 10 11]]
3차원 배열(높이가 3인 2행 4열 배열 = 2행 4열 배열 3개)
[[[ 0  1  2  3]
  [ 4  5  6  7]]

 [[ 8  9 10 11]
  [12 13 14 15]]

 [[16 17 18 19]
  [20 21 22 23]]]
만약 배열의 크기가 너무 커서, 다 표시될 수 없으면 자동으로 배열의 중간 값들을 생략한다.
[[   0    1    2 ...,   97   98   99]
 [ 100  101  102 ...,  197  198  199]
 [ 200  201  202 ...,  297  298  299]
 ..., 
 [9700 9701 9702 ..., 9797 9798 9799]
 [9800 9801 9802 ..., 9897 9898 9899]
 [9900 9901 9902 ..., 9997 9998 9999]]

No comments:

Post a Comment

뉴라이트의 기본적인 개념과 특징

뉴라이트  한국에서 자칭 신우익을 이르는 말. 영어의 신(new) + 우익(right)의 합성어이다.  옛날 종북주의자 시절의 파시즘과 전체주의적 사상을 간직한 채 친일반민족 행위 옹호로 돌아선 사람들이다.  우파를 가장한 짝퉁 우파...