Mảng 3D ngăn xếp Python

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

Mả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

trả lại

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ứ ba

ghi 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.

Bạn có thể có một mảng 3d trong python không?

Để tạo một mảng ba chiều, chúng ta truyền đối tượng đại diện cho x by y by z trong python, trong đó x là danh sách lồng nhau trong đối tượng, y là danh sách lồng nhau bên trong danh sách lồng nhau x và z là giá trị bên trong mỗi y . Mảng ba chiều vừa tạo được lưu trữ trong biến có tên là threedimarray

Cách xếp 2

Sử dụng NumPy, chúng ta có thể thực hiện nối nhiều mảng 2D theo nhiều cách và phương thức khác nhau. .
Phương pháp 1. Sử dụng hàm nối ()
Phương pháp 2. Sử dụng hàm stack()
Phương pháp 3. Sử dụng hàm hstack()
Phương pháp 4. Sử dụng hàm vstack()
Phương pháp 5. Sử dụng hàm dstack()

Python có hỗ trợ mảng đa chiều không?

Trong Python, Mảng đa chiều có thể được triển khai bằng cách khớp một hàm danh sách bên trong một hàm danh sách khác , về cơ bản đây là một hoạt động lồng nhau cho . Ở đây, một danh sách có thể có một số giá trị thuộc bất kỳ loại dữ liệu nào được phân tách bằng dấu phân cách như dấu phẩy.