Tôi có 4 mảng NumPy, mỗi mảng có hình dạng (5,5). Tôi muốn xếp chúng sao cho tôi có được một mảng hình mới (5,5,4). tôi đã thử sử dụng
n = n p. ngăn xếp ((a, b, c, d))
nhưng, vì tôi chưa quen với việc sử dụng NumPy, tôi không thể hiểu tại sao điều đó lại tạo ra hình dạng (4, 5, 5) thay vì (5, 5, 4). Có phương pháp nào khác mà tôi nên sử dụng không?
Ví dụ, 4 mảng
[[1,2]
[3,4]]
[[1,2]
[3,4]]
[[1,2]
[3,4]]
[[1,2]
[3,4]]
khi xếp chồng lên nhau tôi đang mong đợi
[[[1,2]
[3,4]]
[[1,2]
[3,4]]
[[1,2]
[3,4]]
[[1,2]
[3,4]]]
Điều này hoạt động như mong đợi với ngăn xếp nhưng sẽ cho hình dạng (4,2,2) thay vì (2,2,4). Theo hiểu biết của tôi, hình dạng này là (hàng, cột, độ sâu) Tôi có đúng không?
Lấy một chuỗi các mảng và xếp chúng dọc theo trục thứ ba để tạo thành một mảng duy nhất. Xây dựng lại các mảng chia cho. Đây là một cách đơn giản để xếp các mảng 2D (hình ảnh) thành một mảng 3D duy nhất để xử lý
Thông sốtup. dãy các mảng
trả lạiMảng để ngăn xếp. Tất cả chúng phải có hình dạng giống nhau dọc theo tất cả trừ trục thứ ba
xếp chồng lên nhau. ndarray
Mảng được hình thành bằng cách xếp chồng các mảng đã cho
Xem thêm
Ngăn xếp dọc theo trục đầu tiên. Xếp dọc theo trục thứ hai. Tham gia mảng. Tách mảng dọc theo trục thứ baghi chú
Tương đương với np. nối(tup, axis=2) .
ví dụ
>>> a = np.array((1,2,3)) >>> b = np.array((2,3,4)) >>> np.dstack((a,b)) array([[[1, 2], [2, 3], [3, 4]]])
>>> a = np.array([[1],[2],[3]]) >>> b = np.array([[2],[3],[4]]) >>> np.dstack((a,b)) array([[[1, 2]], [[2, 3]], [[3, 4]]])
NumPy là một thư viện Python nổi tiếng dùng để làm việc với mảng. Một trong những chức năng quan trọng của thư viện này là stack()
Điểm quan trọng
- stack() được sử dụng để nối nhiều mảng NumPy. Không giống như nối (), nó nối các mảng dọc theo một trục mới. Nó trả về một mảng NumPy
- để nối 2 mảng, chúng phải có hình dạng và kích thước giống nhau. (e. g. both (2,3)–> 2 hàng,3 cột)
- stack() tạo một mảng mới có nhiều hơn 1 chiều so với các mảng đầu vào. Nếu chúng ta xếp chồng 2 mảng 1 chiều, mảng kết quả sẽ có 2 chiều
cú pháp. cục mịch. ngăn xếp (mảng, trục = 0, ngoài = Không)
Thông số
- mảng. Trình tự các mảng đầu vào (bắt buộc)
- trục. Dọc theo trục này, trong mảng mới, các mảng đầu vào được xếp chồng lên nhau. Các giá trị có thể là số nguyên dương từ 0 đến (n-1) cho mảng đầu ra n chiều. Ví dụ: trong trường hợp kết quả là mảng 2 chiều, có thể có 2 tùy chọn trục. 0 và 1. axis=0 có nghĩa là các mảng đầu vào 1D sẽ được xếp chồng lên nhau theo hàng. axis=1 có nghĩa là các mảng đầu vào 1D sẽ được xếp chồng lên nhau theo cột. Chúng ta sẽ xem chi tiết ví dụ sau. -1 có nghĩa là kích thước cuối cùng. e. g. đối với mảng 2D, trục 1 và -1 giống nhau. (không bắt buộc)
- ngoài. Đích đến để đặt mảng kết quả
Ví dụ 1. xếp chồng hai mảng 1d
con trăn
import numpy as np
# input array
a= np.array([1,>>> a = np.array([[1],[2],[3]]) >>> b = np.array([[2],[3],[4]]) >>> np.dstack((a,b)) array([[[1, 2]], [[2, 3]], [[3, 4]]]) 0,numpy as np0numpy as np1
numpy as np2__= np.array([numpy as np5,numpy as np7,numpy as np9numpy as np1
# input array1
# input array2= # input array4=# input array6# input array7
# input array8# input array9
đầu ra –
mảng([[1, 2, 3],
[4, 5, 6]])
Lưu ý, đầu ra là mảng 2 chiều. Chúng được xếp chồng lên nhau theo hàng. Bây giờ, hãy thay đổi trục thành 1
con trăn
a0
a1=1# input array7
đầu ra –
mảng([[1, 4],
[2, 5],
[3, 6]])
Ở đây, stack() lấy 2 mảng 1-D và xếp chúng lần lượt như thể nó lấp đầy các phần tử trong mảng mới theo cột
con trăn
a5
a1=a81# input array7
đầu ra –
mảng([[1, 4],
[2, 5],
[3, 6]])
-1 đại diện cho 'chiều không gian cuối cùng'. Ở đây có thể có 2 trục. 0 và 1. Vì vậy, -1 giống như 1
Ví dụ #2. xếp chồng hai mảng 2d
Python3
=1
=2==41,>>> a = np.array([[1],[2],[3]]) >>> b = np.array([[2],[3],[4]]) >>> np.dstack((a,b)) array([[[1, 2]], [[2, 3]], [[3, 4]]]) 0,numpy as np0np.array([0
np.array([1np.array([2______35,numpy as np7,numpy as np9np.array([8
np.array([9==412,14,16np.array([0
np.array([1np.array([2______90,,2,,4np.array([8
1. xếp chồng với axis=0
Python3
,6______6# input array6# input array7
đầu ra –
mảng([[[ 1, 2, 3],
[ 4, 5, 6]],[[ 7, 8, 9],
[10, 11, 12]]])
Hãy tưởng tượng như thể chúng được xếp chồng lên nhau và tạo thành một mảng 3 chiều
2. xếp chồng với trục = 1
Python3
,6______61# input array7
Đầu ra – mảng 3D. Kích thước thứ nhất có hàng thứ nhất. Kích thước thứ 2 có hàng thứ 2. [Xếp chồng theo hàng]
mảng([[[ 1, 2, 3],
[ 7, 8, 9]],[[ 4, 5, 6],
[10, 11, 12]]])
3. xếp chồng với trục = 2
Python3
,6______6>>> a = np.array([[1],[2],[3]]) >>> b = np.array([[2],[3],[4]]) >>> np.dstack((a,b)) array([[[1, 2]], [[2, 3]], [[3, 4]]]) 0# input array7
Đầu ra – mảng 3D. Kích thước thứ nhất có hàng thứ nhất. Kích thước thứ 2 có hàng thứ 2. [Xếp chồng theo cột]
mảng([[[ 1, 7],
[ 2, 8],
[ 3, 9]],[[ 4, 10],
[ 5, 11],
[ 6, 12]]])
Ví dụ #2. xếp chồng nhiều hơn hai mảng 2d
1. với trục = 0. chỉ cần xếp chồng lên nhau.
Python3
=2==41,>>> a = np.array([[1],[2],[3]]) >>> b = np.array([[2],[3],[4]]) >>> np.dstack((a,b)) array([[[1, 2]], [[2, 3]], [[3, 4]]]) 0,numpy as np0np.array([0
np.array([1np.array([2______35,numpy as np7,numpy as np9np.array([8
np.array([9==412,14,16np.array([0
np.array([1np.array([2______90,,2,,4np.array([8
numpy as np22==4numpy as np25,numpy as np27,numpy as np29np.array([0
np.array([1np.array([2____333,numpy as np35,numpy as np37np.array([8
numpy as np39=# input array6# input array7
đầu ra –
mảng([[[ 1, 2, 3],
[ 4, 5, 6]],[[ 7, 8, 9],
[10, 11, 12]],[[13, 14, 15],
[16, 17, 18]]])
2. với trục =1 (xếp chồng theo hàng)
Python3
numpy as np39=1# input array7
đầu ra –
mảng([[[ 1, 2, 3],
[ 7, 8, 9],
[13, 14, 15][[ 4, 5, 6],
[10, 11, 12],
[16, 17, 18]]])
3. với trục =2 (xếp chồng theo cột)
con trăn
numpy as np39=>>> a = np.array([[1],[2],[3]]) >>> b = np.array([[2],[3],[4]]) >>> np.dstack((a,b)) array([[[1, 2]], [[2, 3]], [[3, 4]]]) 0# input array7
đầu ra-
mảng([[[ 1, 7, 13],
[ 2, 8, 14],
[ 3, 9, 15][[ 4, 10, 16],
[ 5, 11, 17],
[ 6, 12, 18]]])
Ví dụ #3. xếp chồng hai mảng 3d
1. trục=0. chỉ cần xếp chồng lên nhau
Python3
numpy as np51
numpy as np52=numpy as np541,>>> a = np.array([[1],[2],[3]]) >>> b = np.array([[2],[3],[4]]) >>> np.dstack((a,b)) array([[[1, 2]], [[2, 3]], [[3, 4]]]) 0,numpy as np0np.array([0
np.array([1np.array([2______35,numpy as np7,numpy as np9np.array([0
np.array([1np.array([2____82,14,16numpy as np76
np.array([1numpy as np78______90,,2,,4np.array([0
np.array([1np.array([2____325,numpy as np27,numpy as np29np.array([0
np.array([1np.array([2____333,numpy as np35,numpy as np37# input array00
# input array01=numpy as np54# input array04,# input array06,# input array08np.array([0
np.array([1np.array([2____412,# input array14,# input array16np.array([0
np.array([1np.array([2____420,# input array22,# input array24numpy as np76
np.array([1numpy as np78____428,# input array30,# input array32np.array([0
np.array([1np.array([2____436,# input array38,# input array40np.array([0
np.array([1np.array([2____444,____446,# input array48# input array00
# input array50
# input array51=# input array6# input array7
đầu ra –
mảng([[[[ 1, 2, 3],
[ 4, 5, 6],
[ 7, 8, 9[[ 10, 11, 12],
[ 13, 14, 15],
[ 16, 17, 18]]],[[[ 51, 52, 53],
[ 54, 55, 56],
[ 57, 58, 59]],[[110, 111, 112],
[113, 114, 115],
[116, 117, 118]]]]
2. với trục = 1
Python3
# input array51=1# input array7
đầu ra - Hãy tưởng tượng như thể mảng kết quả chiếm mặt phẳng thứ nhất của mỗi mảng cho thứ nguyên thứ nhất, v.v.