두 개의 NumPy 배열을 세로로 연결
다음을 시도했습니다.
>>> a = np.array([1,2,3])
>>> b = np.array([4,5,6])
>>> np.concatenate((a,b), axis=0)
array([1, 2, 3, 4, 5, 6])
>>> np.concatenate((a,b), axis=1)
array([1, 2, 3, 4, 5, 6])
그러나 적어도 하나의 결과는 다음과 같을 것으로 예상합니다.
array([[1, 2, 3],
[4, 5, 6]])
수직으로 연결되지 않는 이유는 무엇입니까?
a
와 둘 다 b
하나의 축만 가지고 있기 때문에 그 모양은 (3)
이고 axis 매개 변수는 연결할 요소의 축을 구체적으로 참조합니다.
이 예제는 concatenate
축으로 무엇을하는지 명확히해야합니다 . 두 개의 축이있는 두 벡터를 형태로 취하십시오 (2,3)
.
a = np.array([[1,5,9], [2,6,10]])
b = np.array([[3,7,11], [4,8,12]])
첫 번째 축을 따라 연결합니다 (첫 번째 행과 두 번째 행) :
np.concatenate((a,b), axis=0)
array([[ 1, 5, 9],
[ 2, 6, 10],
[ 3, 7, 11],
[ 4, 8, 12]])
두 번째 축을 따라 연결합니다 (첫 번째 열과 두 번째 열) :
np.concatenate((a, b), axis=1)
array([[ 1, 5, 9, 3, 7, 11],
[ 2, 6, 10, 4, 8, 12]])
제시 한 출력을 얻으려면 다음을 사용할 수 있습니다. vstack
a = np.array([1,2,3])
b = np.array([4,5,6])
np.vstack((a, b))
array([[1, 2, 3],
[4, 5, 6]])
으로 여전히 할 수 concatenate
있지만 먼저 모양을 변경해야합니다.
np.concatenate((a.reshape(1,3), b.reshape(1,3)))
array([[1, 2, 3],
[4, 5, 6]])
마지막으로 의견에서 제안한대로 모양을 변경하는 한 가지 방법은 다음을 사용하는 것입니다 newaxis
.
np.concatenate((a[np.newaxis,:], b[np.newaxis,:]))
실제 문제가 두 개의 1-D 배열을 수직으로 연결 concatenate
하는 것이고이 작업을 수행 하는 데 사용 하는 것에 집착하지 않는 경우 np.column_stack 사용을 제안합니다 .
In []: a = np.array([1,2,3])
In []: b = np.array([4,5,6])
In []: np.column_stack((a, b))
array([[1, 4],
[2, 5],
[3, 6]])
numpy의 잘 알려지지 않은 기능은 r_
. 이것은 배열을 빠르게 구축하는 간단한 방법입니다.
import numpy as np
a = np.array([1,2,3])
b = np.array([4,5,6])
c = np.r_[a[None,:],b[None,:]]
print(c)
#[[1 2 3]
# [4 5 6]]
의 목적은 a[None,:]
배열에 축을 추가하는 것입니다 a
.
a = np.array([1,2,3])
b = np.array([4,5,6])
np.array((a,b))
뿐만 아니라 작동
np.array([[1,2,3], [4,5,6]])
목록 목록이든 1D 배열 목록이든 관계없이 np.array
2D 배열을 만들려고합니다.
그러나 기능 np.concatenate
군이 어떻게 stack
작동 하는지 이해하는 것도 좋은 생각 입니다. 이 맥락에서 입력 concatenate
으로 2d 배열 (또는 np.array
2d 배열로 변할 모든 것)의 목록 이 필요합니다 .
np.vstack
first loops though the inputs making sure they are at least 2d, then does concatenate. Functionally it's the same as expanding the dimensions of the arrays yourself.
np.stack
is a new function that joins the arrays on a new dimension. Default behaves just like np.array
.
Look at the code for these functions. If written in Python you can learn quite a bit. For vstack
:
return _nx.concatenate([atleast_2d(_m) for _m in tup], 0)
참고URL : https://stackoverflow.com/questions/21887754/concatenate-two-numpy-arrays-vertically
'programing' 카테고리의 다른 글
숭고한 텍스트 3 : 드래그 앤 드롭, 이동 및 파일 및 폴더 사본 만들기 (0) | 2020.11.24 |
---|---|
uilabel 너비를 동적으로 조정하는 자동 레이아웃 (0) | 2020.11.24 |
invokedynamic을 사용하여 Java 8 람다가 호출되는 이유는 무엇입니까? (0) | 2020.11.24 |
Swift에서 설정할 배열 줄이기 (0) | 2020.11.24 |
const없이 C 스타일 문자열을 선언하는 것이 나쁜가요? (0) | 2020.11.24 |