Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 논리배열
- fancyindexing
- npy
- 넘파이
- 해커랭크
- 파일저장하기
- ndarray
- 배열형태변경
- reshape
- 파이썬
- 배열추가
- 랜덤샘플링
- CONCATENATE
- numpy
- 배열쪼개기
- SQL문제
- 배열연산
- 배열분리하기
- Python
- 배열나누기
- SQL
- Revising the Select Query I
- concat
- 배열붙이기
- buit-in exception
- 넘파이장점
- 벡터연산
- Revising the Select Query II
- 배열자르기
- 표본추출
Archives
- Today
- Total
기록하는 습관
[Numpy] (문제) #001. Reshape & Concat 본문
Exercise
위와 같이 배열을 합치려고 한다.
두 배열이 아래와 같이 주어졌다고 하자.
import numpy as np
x = np.array([[1,2], [3,4]])
y = np.array([5,6])
print(x)
print( "shape :", x.shape, "ndim :", x.ndim )
print(y)
print( "shape :", y.shape, "ndim :", y.ndim )
[[1 2]
[3 4]]
shape : (2, 2) ndim : 2
[5 6]
shape : (2,) ndim : 1
만약 배열 y가 아래와 같다면 바로 concat을 적용할 수 있다.
y_ = np.array([[5],[6]])
print( y_ )
print( "shape :", y_.shape, "ndim :", y_.ndim )
[[5]
[6]]
shape : (2, 1) ndim : 2
np.concatenate([x,y_], axis=1)
array([[1, 2, 5],
[3, 4, 6]])
그러나 주어진 y에 대해서는 concat을 바로 적용할 수 없다.
np.concatenate([x,y], axis=1)
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-8-8b9e81256274> in <module>
----> 1 np.concatenate([x,y], axis=1)
<__array_function__ internals> in concatenate(*args, **kwargs)
ValueError: all the input arrays must have same number of dimensions, but the array at index 0 has 2 dimension(s) and the array at index 1 has 1 dimension(s)
Solution
y의 shape이 문제인데, 다음과 같은 방법으로 reshape해서 해결 가능하다.
x
array([[1, 2],
[3, 4]])
y_new = y.reshape(2,-1)
sol = np.concatenate( (x, y_new), axis=1 )
print( "기존 y ▶", y )
print( "shape :", y.shape, "ndim :", y.ndim , "\n")
print( "y.reshape(2,-1) reshape 결과 ▶\n", y.reshape(2,-1) )
print( "shape :", y_new.shape, "ndim :", y_new.ndim, "\n" )
print( "답 ▶\n", sol )
기존 y ▶ [5 6]
shape : (2,) ndim : 1
y.reshape(2,-1) reshape 결과 ▶
[[5]
[6]]
shape : (2, 1) ndim : 2
답 ▶
[[1 2 5]
[3 4 6]]
아래와 같은 방법으로 차원을 추가해서 풀 수 있다.
y_new = y[:, np.newaxis]
sol = np.concatenate( (x, y_new), axis=1 )
print( "기존 y ▶", y )
print( "shape :", y.shape, "ndim :", y.ndim , "\n")
print( "y[:, np.newaxis] 축 추가 결과 ▶\n", y[:, np.newaxis] )
print( "shape :", y_new.shape, "ndim :", y_new.ndim, "\n" )
print( "답 ▶\n", sol )
기존 y ▶ [5 6]
shape : (2,) ndim : 1
y[:, np.newaxis] 축 추가 결과 ▶
[[5]
[6]]
shape : (2, 1) ndim : 2
답 ▶
[[1 2 5]
[3 4 6]]
아래와 같이 앞쪽 차원을 추가한 후 Transpose해도 가능하다.
y_new = y[np.newaxis, :].T
sol = np.concatenate( (x, y_new), axis=1 )
print( "y[np.newaxis, :] 축 추가 결과 ▶", y[np.newaxis, :] )
print( "Transpose 결과 ▶\n", y[np.newaxis, :].T )
print( "shape :", y_new.shape, "ndim :", y_new.ndim )
print( "답 y[np.newaxis, :].T ▶\n", sol )
y[np.newaxis, :] 축 추가 결과 ▶ [[5 6]]
Transpose 결과 ▶
[[5]
[6]]
shape : (2, 1) ndim : 2
답 y[np.newaxis, :].T ▶
[[1 2 5]
[3 4 6]]
'Python > Numpy' 카테고리의 다른 글
[Numpy] 007. 배열 내 연산 (0) | 2023.08.08 |
---|---|
[Numpy] 006. 배열 자르기 (Split) (0) | 2023.08.08 |
[Numpy] 005. 배열 붙이기 (Concatenate) (0) | 2023.08.07 |
[Numpy] 004. 배열 인덱싱 & 슬라이싱 (Indexing & Slicing) (0) | 2023.08.06 |
[Numpy] 003. 배열 형태 변경하기 (Reshape) (0) | 2023.08.05 |