1. ndarray 생성하기 (=tensor생성하기)
np.array ( seq [,dtype])
list
나tuple
등의 sequence 객체로부터ndarray
생성.dtype
: data type of element.float64
: default type in the numpy. *uint8
: unsigned int (8bit), the most commonly used for image processingint8
: signed int (8bit)float32
: float (32bit)
예제는 다음과 같음.
t = (1,2,3,4,5,6)
a = np.array(t)
print(type(t))
print(type(a))
결과는
<class 'tuple'>
<class 'numpy.ndarray'>
2. ndarray의 대표적인 attributes
print(a.ndim) # num of dimensions
print(a.shape) # 각 축의 요소의 수를 가진 tuple반환.
print(a.itemsize) # 각 요소의 bytes 크기
print(a.size) # 총 요소의 수.
print(a.dtype) # 각 요소의 data type
결과는
1
(6,)
8
6
int64
3. 기본 dtype
numpy 의 경우, float64
와 int64
가 기본적인 data type임.
- tensorflow 의 경우,
float32
와int32
- torch 의 경우,
float32
와int64
https://dsaint31.tistory.com/456
2024.03.15 - [Python] - [DL] Tensor 객체의 attributes: ndim, shape, dtype
4. Multi-dimensional Array
# nested lists result in multi-dimensional arrays
a = np.array([range(i, i + 3) for i in [2, 4, 6]])
print(a.ndim)
print(a.shape)
print(a.itemsize) #bytes
print(a.size)
print(a.dtype)
a
결과는
2
(3, 3)
8
9
int64
array([[2, 3, 4],
[4, 5, 6],
[6, 7, 8]])
5. ndarray를 특정 값으로 초기화하기
zeros
,ones
, and full
(or fill
: tf)
5.1 zeros: 0으로 초기화
a = np.zeros((3,2)) # default dtype = float64
# a = np.zeros(shape=(4,4),dtype=np.uint8)
print(a.dtype)
a
결과는
<dtype: 'float32'>
<tf.Tensor: shape=(3, 2), dtype=float32, numpy=
array([[0., 0.],
[0., 0.],
[0., 0.]], dtype=float32)>
5.2 ones: 1로 초기화
a = np.ones((4,2,3))
print(a.dtype)
a
결과는
float64
array([[[1., 1., 1.],
[1., 1., 1.]],
[[1., 1., 1.],
[1., 1., 1.]],
[[1., 1., 1.],
[1., 1., 1.]],
[[1., 1., 1.],
[1., 1., 1.]]])
5.3 full: 특정값을 지정하여 초기화
a = np.full((1,3),255)
print(a.dtype)
a
결과는
int64
array([[255, 255, 255]])
6. 기존 ndarray객체와 shape를 같게 초기화.
- 기존의
ndarray
와 같은 shape를 가지는ndarray
생성 (torch
의tensor
도 유사.)zeros_like
,ones_like
, andfull_like
tf
의 경우는 다음과 같음.zeors_like
,ones_like
, andfill
6.1 zeros_like
s = np.array([[1,2,3],[4,5,6]])
print(s.shape, a.dtype)
a = np.zeros_like(s)
print(a.shape, a.dtype)
a
결과는
(2, 3) int64
(2, 3) int64
array([[0, 0, 0],
[0, 0, 0]])
6.2 ones_like
a = np.ones_like(s)
print(a.shape, a.dtype)
a
결과는
(2, 3) int64
array([[1, 1, 1],
[1, 1, 1]])
6.3 full_like
a = np.full_like(s,3.0)
print(a.dtype)
a
결과는
int64
array([[3, 3, 3],
[3, 3, 3]])
7. 기타
7.1 arange
range의 float 버전.
print(range(0,10,1)) # only integer
print(np.arange(0,1,0.1))
결과는
range(0, 10)
[0. 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9]
dtype도 지정가능.
7.2 linspace
step 대신 points 갯수
a = np.linspace(1,5,6)
print(a.dtype)
print(a)
결과는
float64
[1. 1.8 2.6 3.4 4.2 5. ]
7.3 Identity Matrix
a = np.eye(5)
print(a.dtype)
print(a)
결과는
float64
[[1. 0. 0. 0. 0.]
[0. 1. 0. 0. 0.]
[0. 0. 1. 0. 0.]
[0. 0. 0. 1. 0.]
[0. 0. 0. 0. 1.]]
<dtype: 'float32'>
7.4 초기화 없이 생성.
a = np.empty((4,2))
print(a.dtype)
print(a)
결과는
float64
[[4.86489613e-310 0.00000000e+000]
[0.00000000e+000 0.00000000e+000]
[0.00000000e+000 0.00000000e+000]
[0.00000000e+000 0.00000000e+000]]
8. 난수로 구성된 ndarray
2024.03.29 - [Python] - [DL] Tensor: Random Tensor 만들기 (NumPy, PyTorch)
9. dtype이나 shape변경하기.
2024.03.15 - [Python] - [DL] Tensor: dtype 변경(casting) 및 shape 변경.
2024.09.09 - [Python] - [NumPy] ravel() 메서드 with flatten
같이 보면 좋은 URLs
2024.09.12 - [Python] - [Summary] NumPy(Numerical Python)
2024.03.18 - [Python] - [DL] Tensor: Indexing <Simple, Slicing, Fancy, Boolean Mask>
2024.03.16 - [Python] - [DL] Tensor: Transpose and Permute
2024.03.19 - [Python] - [Tensor] vectorized op. (or universal func)
'Python' 카테고리의 다른 글
[CV] Chessboard관련 함수들: OpenCV (0) | 2024.09.10 |
---|---|
[NumPy] ravel() 메서드 with flatten() 메서드 (0) | 2024.09.09 |
[Py] Python에서 string formatting. (0) | 2024.09.04 |
[Python] f-string과 for문 체크 문제 (0) | 2024.09.04 |
[Python] Class 간단 정리 (0) | 2024.07.24 |