Hướng dẫn convert 2d array to 3d python - chuyển đổi mảng 2d sang 3d python

Tôi có một mảng numpy, mỗi phần tử của mảng chứa một mảng có cùng hình dạng (9,5). Những gì tôi muốn là một mảng 3D.

Tôi đã thử sử dụng NP.Stack.

data = list(map(lambda x: getKmers(x, 9), data)) # getKmers creates a       
                                                 # list of list from a pandas dataframe
data1D = np.array(data)                          # shape (350,)
data2D = np.stack(data1D)

data1D:
array([list([      pdbID  AtomNo Type      Eta    Theta
0  1a9l.pdb     2.0    G  169.225  212.838
1  1a9l.pdb     3.0    G  168.439  206.785
2  1a9l.pdb     4.0    U  170.892  205.845
3  1a9l.pdb     5.0    G  164.726  225.982
4  1a9l.pdb     6.0    A  308.788  144.370
5  1a9l.pdb     7.0    C  185.211  209.363
6  1a9l.pdb     8.0    U  167.612  216.614
7  1a9l.pdb     9.0    C  168.741  219.239
8  1a9l.pdb    10.0    C  163.639  207.044,       pdbID  AtomNo Type          Eta    Theta
1  1a9l.pdb     3.0    G  168.439  206.785
2  1a9l.pdb     4.0    U  170.892  205.845
3  1a9l.pdb     5.0    G  164.726  225.982
4  1a9l.pdb     6.0    A  308.788  144.370
5  1a9l.pdb     7.0    C  185.211  209.363
6  1a9l.pdb     8.0    U  167.612  216.614
7  1a9l.pdb     9.0    C  168.741  219.239
8  1a9l.pdb    10.0    C  163.639  207.044

Tôi nhận được lỗi này: Không thể sao chép trình tự với trục 9 thành mảng có kích thước 5

Tôi muốn tạo một ma trận 3D, trong đó mọi Subarray đều ở trong kích thước 3D mới. Tôi gues hình dạng mới sẽ là (9,5,350)

 data.reshape((data.shape[0], data.shape[1], 1))

from numpy
import array
data = [
   [11, 22],
   [33, 44],
   [55, 66]
]
data = array(data)
print(data.shape)
data = data.reshape((data.shape[0], data.shape[1], 1))
print(data.shape)

Chạy ví dụ đầu tiên in kích thước của mỗi chiều trong mảng 2D, định hình lại mảng, sau đó tóm tắt hình dạng của mảng 3D mới.

Kết quả

Nếu bạn muốn tạo một ma trận 3D trong đó mọi SubArray nằm trong kích thước 3D mới, thì hình dạng cuối cùng có phải là

 data.reshape((data.shape[0], data.shape[1], 1))
5 không? Trong trường hợp đó, bạn có thể chỉ cần sử dụng:

new_array = np.asarray(data).reshape(350, 9, 5)


Gợi ý: 2

Mảng phẳng có nghĩa là chuyển đổi một mảng đa chiều thành mảng 1D. của các mảng trong dẹt, ravel và cũng để sắp xếp lại các phần tử rot90, flip, fliplr, flipud, v.v. Phương pháp định hình lại.

arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])

newarr = arr.(4, 3)


Gợi ý: 3

Ở đây, Numpy tìm nạp dữ liệu từ các hàng trước và các cột, để điền vào các phần tử của mảng 1D., Để có được các phần tử của mảng 1D, Numpy đầu tiên tìm nạp các giá trị trên trục cuối cùng (trục sâu hoặc trục mặt phẳng), Sau đó, trục thứ hai đến cuối (cột), sau đó là trục (hàng) thứ nhất., Lưu ý cách Numpy sử dụng các phần tử mảng 1D. Nó lấy mỗi phần tử từ mảng 1D và điền vào các hàng trước, sau đó là các cột., Giá trị -1 là đặc biệt cho phương thức định hình lại. Điều đó có nghĩa là, tạo ra một kích thước theo kích thước sẽ sử dụng các yếu tố không xác định còn lại. Chúng tôi sẽ thấy những gì mà không xác định được có nghĩa là sớm. Hiện tại, không được xác định là đúng với tất cả các yếu tố, vì vậy hình dạng giống như số lượng các phần tử trong mảng 2D:

>>>
import numpy as np
   >>>
   arr_1d = np.arange(6) >>>
   arr_1d
array([0, 1, 2, 3, 4, 5]) >>>
   arr_1d.shape(6, )

>>> arr_2d = arr_1d.reshape((2, 3)) >>>
   arr_2d
array([
   [0, 1, 2],
   [3, 4, 5]
])

>>> arr_2d.reshape((6, ))
array([0, 1, 2, 3, 4, 5])

>>> arr_2d.reshape(-1)
array([0, 1, 2, 3, 4, 5])

data1D:
array([list([      pdbID  AtomNo Type      Eta    Theta
0  1a9l.pdb     2.0    G  169.225  212.838
1  1a9l.pdb     3.0    G  168.439  206.785
2  1a9l.pdb     4.0    U  170.892  205.845
3  1a9l.pdb     5.0    G  164.726  225.982
4  1a9l.pdb     6.0    A  308.788  144.370
5  1a9l.pdb     7.0    C  185.211  209.363
6  1a9l.pdb     8.0    U  167.612  216.614
7  1a9l.pdb     9.0    C  168.741  219.239
8  1a9l.pdb    10.0    C  163.639  207.044,       pdbID  AtomNo Type          Eta    Theta
1  1a9l.pdb     3.0    G  168.439  206.785
2  1a9l.pdb     4.0    U  170.892  205.845
3  1a9l.pdb     5.0    G  164.726  225.982
4  1a9l.pdb     6.0    A  308.788  144.370
5  1a9l.pdb     7.0    C  185.211  209.363
6  1a9l.pdb     8.0    U  167.612  216.614
7  1a9l.pdb     9.0    C  168.741  219.239
8  1a9l.pdb    10.0    C  163.639  207.044
0

data1D:
array([list([      pdbID  AtomNo Type      Eta    Theta
0  1a9l.pdb     2.0    G  169.225  212.838
1  1a9l.pdb     3.0    G  168.439  206.785
2  1a9l.pdb     4.0    U  170.892  205.845
3  1a9l.pdb     5.0    G  164.726  225.982
4  1a9l.pdb     6.0    A  308.788  144.370
5  1a9l.pdb     7.0    C  185.211  209.363
6  1a9l.pdb     8.0    U  167.612  216.614
7  1a9l.pdb     9.0    C  168.741  219.239
8  1a9l.pdb    10.0    C  163.639  207.044,       pdbID  AtomNo Type          Eta    Theta
1  1a9l.pdb     3.0    G  168.439  206.785
2  1a9l.pdb     4.0    U  170.892  205.845
3  1a9l.pdb     5.0    G  164.726  225.982
4  1a9l.pdb     6.0    A  308.788  144.370
5  1a9l.pdb     7.0    C  185.211  209.363
6  1a9l.pdb     8.0    U  167.612  216.614
7  1a9l.pdb     9.0    C  168.741  219.239
8  1a9l.pdb    10.0    C  163.639  207.044
1


Gợi ý: 4

Bây giờ chúng tôi sử dụng & nbsp; numpy.reshape () & nbsp; để tạo một mảng mới & nbsp; b & nbsp; bằng cách định hình lại mảng ban đầu của chúng tôi & nbsp; a. Lưu ý rằng chúng tôi vượt qua & nbsp; numpy.reshape () & nbsp; mảng & nbsp; a & nbsp; và một tuple cho hình dạng mới & nbsp; (2,2)., Phần này sẽ đưa bạn thông qua việc sử dụng & nbsp; numpy.shape & nbsp; và hiểu kết quả cho các mảng 1D, 2D và 3D., Hàm định hình lại có hai đầu vào bắt buộc. Đầu tiên, một mảng. Thứ hai, một hình dạng. Hãy nhớ rằng & nbsp; numpy & nbsp; hình dạng mảng ở dạng bộ dữ liệu. Ví dụ: một bộ tuple cho một mảng có hai hàng và ba cột sẽ trông như thế này: & nbsp; (2, 3)., Reshape () & nbsp; là một hàm thành viên của & nbsp; numpy & nbsp; cho bất kỳ đối tượng mảng nào. Khi & nbsp; reshape () & nbsp; được gọi theo cách này, nó chỉ yêu cầu một tham số, một tuple hình. Sử dụng cùng một ví dụ, chúng ta có thể định hình lại & nbsp; a & nbsp; như sau.

Mảng sau đây có 5 cột/phần tử và hình dạng có thể được mô tả là 5.


Gợi ý: 5

Đổ một dưa chua của mảng vào tệp được chỉ định., Trả về dưa chua của mảng dưới dạng chuỗi. Với các đối tượng container khác trong Python, nội dung của ndarray có thể được truy cập và sửa đổi bằng cách lập chỉ mục hoặc cắt mảng (ví dụ, sử dụng các số nguyên n) và thông qua các phương thức và thuộc tính của ndarray.

data1D:
array([list([      pdbID  AtomNo Type      Eta    Theta
0  1a9l.pdb     2.0    G  169.225  212.838
1  1a9l.pdb     3.0    G  168.439  206.785
2  1a9l.pdb     4.0    U  170.892  205.845
3  1a9l.pdb     5.0    G  164.726  225.982
4  1a9l.pdb     6.0    A  308.788  144.370
5  1a9l.pdb     7.0    C  185.211  209.363
6  1a9l.pdb     8.0    U  167.612  216.614
7  1a9l.pdb     9.0    C  168.741  219.239
8  1a9l.pdb    10.0    C  163.639  207.044,       pdbID  AtomNo Type          Eta    Theta
1  1a9l.pdb     3.0    G  168.439  206.785
2  1a9l.pdb     4.0    U  170.892  205.845
3  1a9l.pdb     5.0    G  164.726  225.982
4  1a9l.pdb     6.0    A  308.788  144.370
5  1a9l.pdb     7.0    C  185.211  209.363
6  1a9l.pdb     8.0    U  167.612  216.614
7  1a9l.pdb     9.0    C  168.741  219.239
8  1a9l.pdb    10.0    C  163.639  207.044
2

data1D:
array([list([      pdbID  AtomNo Type      Eta    Theta
0  1a9l.pdb     2.0    G  169.225  212.838
1  1a9l.pdb     3.0    G  168.439  206.785
2  1a9l.pdb     4.0    U  170.892  205.845
3  1a9l.pdb     5.0    G  164.726  225.982
4  1a9l.pdb     6.0    A  308.788  144.370
5  1a9l.pdb     7.0    C  185.211  209.363
6  1a9l.pdb     8.0    U  167.612  216.614
7  1a9l.pdb     9.0    C  168.741  219.239
8  1a9l.pdb    10.0    C  163.639  207.044,       pdbID  AtomNo Type          Eta    Theta
1  1a9l.pdb     3.0    G  168.439  206.785
2  1a9l.pdb     4.0    U  170.892  205.845
3  1a9l.pdb     5.0    G  164.726  225.982
4  1a9l.pdb     6.0    A  308.788  144.370
5  1a9l.pdb     7.0    C  185.211  209.363
6  1a9l.pdb     8.0    U  167.612  216.614
7  1a9l.pdb     9.0    C  168.741  219.239
8  1a9l.pdb    10.0    C  163.639  207.044
3

data1D:
array([list([      pdbID  AtomNo Type      Eta    Theta
0  1a9l.pdb     2.0    G  169.225  212.838
1  1a9l.pdb     3.0    G  168.439  206.785
2  1a9l.pdb     4.0    U  170.892  205.845
3  1a9l.pdb     5.0    G  164.726  225.982
4  1a9l.pdb     6.0    A  308.788  144.370
5  1a9l.pdb     7.0    C  185.211  209.363
6  1a9l.pdb     8.0    U  167.612  216.614
7  1a9l.pdb     9.0    C  168.741  219.239
8  1a9l.pdb    10.0    C  163.639  207.044,       pdbID  AtomNo Type          Eta    Theta
1  1a9l.pdb     3.0    G  168.439  206.785
2  1a9l.pdb     4.0    U  170.892  205.845
3  1a9l.pdb     5.0    G  164.726  225.982
4  1a9l.pdb     6.0    A  308.788  144.370
5  1a9l.pdb     7.0    C  185.211  209.363
6  1a9l.pdb     8.0    U  167.612  216.614
7  1a9l.pdb     9.0    C  168.741  219.239
8  1a9l.pdb    10.0    C  163.639  207.044
4

data1D:
array([list([      pdbID  AtomNo Type      Eta    Theta
0  1a9l.pdb     2.0    G  169.225  212.838
1  1a9l.pdb     3.0    G  168.439  206.785
2  1a9l.pdb     4.0    U  170.892  205.845
3  1a9l.pdb     5.0    G  164.726  225.982
4  1a9l.pdb     6.0    A  308.788  144.370
5  1a9l.pdb     7.0    C  185.211  209.363
6  1a9l.pdb     8.0    U  167.612  216.614
7  1a9l.pdb     9.0    C  168.741  219.239
8  1a9l.pdb    10.0    C  163.639  207.044,       pdbID  AtomNo Type          Eta    Theta
1  1a9l.pdb     3.0    G  168.439  206.785
2  1a9l.pdb     4.0    U  170.892  205.845
3  1a9l.pdb     5.0    G  164.726  225.982
4  1a9l.pdb     6.0    A  308.788  144.370
5  1a9l.pdb     7.0    C  185.211  209.363
6  1a9l.pdb     8.0    U  167.612  216.614
7  1a9l.pdb     9.0    C  168.741  219.239
8  1a9l.pdb    10.0    C  163.639  207.044
5


Gợi ý: 6

Để thực hiện nhiệm vụ cụ thể này, chúng tôi có thể sử dụng phương thức Rumpy RShape () và chức năng này sẽ giúp người dùng định hình lại mảng ba chiều thành mảng 2 chiều. Trong Python định hình lại có nghĩa là chúng ta có thể dễ dàng sửa đổi hình dạng của mảng mà không thay đổi các phần tử., Để xác định mảng 3-D, chúng ta có thể sử dụng phương thức numpy.ones (). Trong python, hàm numpy.ones () lấp đầy các giá trị với một và nó sẽ luôn trả lại một mảng numpy mới có hình dạng đã cho., Trong ví dụ này, chúng ta phải chuyển đổi danh sách thành một mảng 3 chiều. Để thực hiện nhiệm vụ này, chúng tôi sẽ tạo một danh sách có tên 'new_lis' và sau đó sử dụng phương thức np.asarray () để chuyển đổi danh sách đầu vào thành một mảng numpy và chức năng này có sẵn trong mô -đun Numpy. , chúng tôi đã nhập thư viện Python Numpy và sau đó, tạo một mảng bằng cách sử dụng np.array. Bây giờ sử dụng phương thức định hình lại (), trong đó chúng tôi đã vượt qua hình dạng và kích thước mảng.

Mã nguồn:

data1D:
array([list([      pdbID  AtomNo Type      Eta    Theta
0  1a9l.pdb     2.0    G  169.225  212.838
1  1a9l.pdb     3.0    G  168.439  206.785
2  1a9l.pdb     4.0    U  170.892  205.845
3  1a9l.pdb     5.0    G  164.726  225.982
4  1a9l.pdb     6.0    A  308.788  144.370
5  1a9l.pdb     7.0    C  185.211  209.363
6  1a9l.pdb     8.0    U  167.612  216.614
7  1a9l.pdb     9.0    C  168.741  219.239
8  1a9l.pdb    10.0    C  163.639  207.044,       pdbID  AtomNo Type          Eta    Theta
1  1a9l.pdb     3.0    G  168.439  206.785
2  1a9l.pdb     4.0    U  170.892  205.845
3  1a9l.pdb     5.0    G  164.726  225.982
4  1a9l.pdb     6.0    A  308.788  144.370
5  1a9l.pdb     7.0    C  185.211  209.363
6  1a9l.pdb     8.0    U  167.612  216.614
7  1a9l.pdb     9.0    C  168.741  219.239
8  1a9l.pdb    10.0    C  163.639  207.044
6

Example:

data1D:
array([list([      pdbID  AtomNo Type      Eta    Theta
0  1a9l.pdb     2.0    G  169.225  212.838
1  1a9l.pdb     3.0    G  168.439  206.785
2  1a9l.pdb     4.0    U  170.892  205.845
3  1a9l.pdb     5.0    G  164.726  225.982
4  1a9l.pdb     6.0    A  308.788  144.370
5  1a9l.pdb     7.0    C  185.211  209.363
6  1a9l.pdb     8.0    U  167.612  216.614
7  1a9l.pdb     9.0    C  168.741  219.239
8  1a9l.pdb    10.0    C  163.639  207.044,       pdbID  AtomNo Type          Eta    Theta
1  1a9l.pdb     3.0    G  168.439  206.785
2  1a9l.pdb     4.0    U  170.892  205.845
3  1a9l.pdb     5.0    G  164.726  225.982
4  1a9l.pdb     6.0    A  308.788  144.370
5  1a9l.pdb     7.0    C  185.211  209.363
6  1a9l.pdb     8.0    U  167.612  216.614
7  1a9l.pdb     9.0    C  168.741  219.239
8  1a9l.pdb    10.0    C  163.639  207.044
7

Hãy để một ví dụ và các yếu tố cắt trong một mảng Python numpy.Python NumPy array.

data1D:
array([list([      pdbID  AtomNo Type      Eta    Theta
0  1a9l.pdb     2.0    G  169.225  212.838
1  1a9l.pdb     3.0    G  168.439  206.785
2  1a9l.pdb     4.0    U  170.892  205.845
3  1a9l.pdb     5.0    G  164.726  225.982
4  1a9l.pdb     6.0    A  308.788  144.370
5  1a9l.pdb     7.0    C  185.211  209.363
6  1a9l.pdb     8.0    U  167.612  216.614
7  1a9l.pdb     9.0    C  168.741  219.239
8  1a9l.pdb    10.0    C  163.639  207.044,       pdbID  AtomNo Type          Eta    Theta
1  1a9l.pdb     3.0    G  168.439  206.785
2  1a9l.pdb     4.0    U  170.892  205.845
3  1a9l.pdb     5.0    G  164.726  225.982
4  1a9l.pdb     6.0    A  308.788  144.370
5  1a9l.pdb     7.0    C  185.211  209.363
6  1a9l.pdb     8.0    U  167.612  216.614
7  1a9l.pdb     9.0    C  168.741  219.239
8  1a9l.pdb    10.0    C  163.639  207.044
8


Gợi ý: 7

Numpy có thể thấy cấu trúc lặp đi lặp lại trong số các danh sách những người có danh sách được truyền cho NP.Array và giải quyết hai chiều của dữ liệu, mà chúng tôi cho rằng kích thước 'sinh viên' và kích thước 'Bài kiểm tra', tương ứng. , Numpy cung cấp một loại các chức năng cho phép chúng tôi thao tác theo cách mà dữ liệu của một mảng có thể được truy cập. Chúng cho phép chúng tôi định hình lại một mảng, thay đổi tính kích thước của nó và trao đổi vị trí của các trục của nó:, định nghĩa về chiều này là phổ biến vượt xa sự vô hiệu; Người ta phải sử dụng ba số để chỉ định duy nhất một điểm trong không gian vật lý, đó là lý do tại sao người ta nói rằng không gian bao gồm ba chiều., Các mảng không chiều không hiển thị trong các ứng dụng thực rất thường xuyên. Tuy nhiên, chúng quan trọng từ quan điểm của sự nhảm nhí là tự đồng nhất trong cách đối xử với kích thước trong các mảng của nó, và điều quan trọng là bạn ít nhất phải tiếp xúc với một mảng 0D và hiểu các sắc thái của nó.

data1D:
array([list([      pdbID  AtomNo Type      Eta    Theta
0  1a9l.pdb     2.0    G  169.225  212.838
1  1a9l.pdb     3.0    G  168.439  206.785
2  1a9l.pdb     4.0    U  170.892  205.845
3  1a9l.pdb     5.0    G  164.726  225.982
4  1a9l.pdb     6.0    A  308.788  144.370
5  1a9l.pdb     7.0    C  185.211  209.363
6  1a9l.pdb     8.0    U  167.612  216.614
7  1a9l.pdb     9.0    C  168.741  219.239
8  1a9l.pdb    10.0    C  163.639  207.044,       pdbID  AtomNo Type          Eta    Theta
1  1a9l.pdb     3.0    G  168.439  206.785
2  1a9l.pdb     4.0    U  170.892  205.845
3  1a9l.pdb     5.0    G  164.726  225.982
4  1a9l.pdb     6.0    A  308.788  144.370
5  1a9l.pdb     7.0    C  185.211  209.363
6  1a9l.pdb     8.0    U  167.612  216.614
7  1a9l.pdb     9.0    C  168.741  219.239
8  1a9l.pdb    10.0    C  163.639  207.044
9

 data.reshape((data.shape[0], data.shape[1], 1))
0

 data.reshape((data.shape[0], data.shape[1], 1))
1

 data.reshape((data.shape[0], data.shape[1], 1))
2

 data.reshape((data.shape[0], data.shape[1], 1))
3

 data.reshape((data.shape[0], data.shape[1], 1))
4