Chuyển đổi mảng 1D thành mảng 3D Python

Lập chỉ mục và cắt mảng là những phần quan trọng trong phân tích dữ liệu và nhiều loại hoạt động toán học khác nhau. Chúng tôi luôn không làm việc với toàn bộ mảng hoặc ma trận hoặc Dataframe. Lập chỉ mục và cắt mảng là quan trọng nhất khi chúng ta làm việc với một tập con của mảng. Bài viết này sẽ được bắt đầu với những điều cơ bản và cuối cùng sẽ giải thích một số kỹ thuật nâng cao về cắt và lập chỉ mục các mảng 1D, 2D và 3D. Ngay cả khi bạn đã sử dụng tính năng lập chỉ mục và cắt mảng trước đó, bạn vẫn có thể tìm thấy điều gì đó để học trong bài viết hướng dẫn này.    

Cắt và lập chỉ mục mảng 1D

Đầu tiên, nhập Numpy vào sổ ghi chép của bạn và tạo mảng một chiều. Ở đây tôi đang sử dụng Máy tính xách tay Jupyter. Nhưng bất kỳ máy tính xách tay nào khác đều tốt cho việc này.   

nhập numpy dưới dạng np

x = np. mảng([2,5,1,9,0,3,8,11,-4,-3,-8,6,10])

lập chỉ mục cơ bản

Hãy thực hiện một số thao tác cắt lát đơn giản. Xin nhắc lại, các mảng không được lập chỉ mục, vì vậy số lượng bắt đầu từ 0. x[0] sẽ trả về phần tử đầu tiên của mảng và x[1] sẽ trả về phần tử thứ hai của mảng

x[0]

đầu ra. 2

x[3]

đầu ra. 9

x[4]

đầu ra. 0

cắt lát cơ bản

Bây giờ chuyển sang một số thao tác cắt của mảng một chiều,

x[1. 7]

đầu ra. mảng([5, 1, 9, 0, 3, 8])

Ở đây 1 là giới hạn dưới và 7 là giới hạn trên. Mảng đầu ra bắt đầu từ phần tử của chỉ số 1 đến 7, bao gồm giới hạn dưới và loại trừ giới hạn trên. Điều đó có nghĩa là nó bao gồm phần tử ở chỉ số 1 nhưng không bao gồm phần tử ở chỉ số 7.   

cắt lát với khoảng thời gian

x[2. 3]

đầu ra. mảng([ 1, 3, -4, 6])

Trong trường hợp này, 2 là điểm bắt đầu và 3 là khoảng. Vì vậy mảng trả về sao từ phần tử trong chỉ số hai. Sau đó, nó lấy mọi phần tử thứ ba của mảng cho đến hết.   

Nói rằng, chúng ta không cần đến cuối cùng. Chúng tôi chỉ muốn xuất đến -4. Trong trường hợp đó chúng ta có thể cắt thêm nó.  

x[2. 3][0. 3]
mảng([ 1, 3, -4])

Bắt đầu và kết thúc mặc định

Tiếp theo, tôi sẽ hiển thị một cú pháp, được sử dụng phổ biến nhất. x[0. 4] được sử dụng để trả về bốn phần tử đầu tiên, phải không? . 4] có thể được sử dụng để làm điều tương tự. Bởi vì nếu chúng tôi không đặt bất kỳ giới hạn dưới nào, theo mặc định, nó sẽ bắt đầu lại từ đầu. Theo cách tương tự, nếu chúng tôi không đề cập đến bất kỳ giới hạn trên nào, theo mặc định, nó sẽ xuất cho đến khi kết thúc. Khi chúng tôi không đề cập đến cả giới hạn trên và giới hạn dưới, chúng tôi sẽ nhận được toàn bộ mảng làm đầu ra như hình bên dưới.  

x[. 4]

đầu ra. mảng([2, 5, 1, 9])

x[3. ]

đầu ra. mảng([ 9, 0, 3, 8, 11, -4, -3, -8, 6, 10])

x[. ]

đầu ra. mảng( [2,5,1,9,0,3,8,11,-4,-3,-8,6,10])

Cắt lát với khoảng thời gian và cả giới hạn trên và dưới

x[1. 7. 2]

đầu ra. mảng([5, 9, 3])

Trong x[1. 7. 2], 1 là giới hạn dưới, 7 là giới hạn trên và 2 trong khoảng. Đầu ra bắt đầu ở phần tử trong chỉ mục 1 và kết thúc ở chỉ mục 7 nhưng thay vì xuất từng phần tử ở giữa, nó xuất ra mọi phần tử thứ hai vì khoảng thời gian là 2.  

Khoảng thời gian bắt đầu từ cuối

x[-7. 2]

mảng([ 8, -4, -8, 10])

Ở đây, -7 có nghĩa là phần tử thứ bảy từ dưới lên hoặc cuối và 2 là khoảng. Đầu ra bắt đầu từ phần tử thứ bảy ở dưới cùng và đi lên cho đến hết

x[-7. -2]

mảng([8, 0, 1, 2])

Cắt và lập chỉ mục mảng 2D

Bây giờ chúng ta sẽ thực hành tương tự với mảng hai chiều. Tạo mảng hai chiều bằng hàm sắp xếp và định hình lại. Tôi đã tạo ma trận 6×7 cho video này. Bởi vì nó đủ lớn để hiển thị tốt một số hoạt động

y = n p. sắp xếp(42). định hình lại(6,7)

Xuất hàng

Cách dễ nhất là trả về các hàng từ một mảng hai chiều. Chỉ cần lập chỉ mục thông qua số lượng hàng

y[0]

đầu ra

array([0, 1, 2, 3, 4, 5, 6])

 

y[1]

đầu ra

array([ 7,  8,  9, 10, 11, 12, 13])

 

y[3]

đầu ra

array([21, 22, 23, 24, 25, 26, 27])

Xuất các cột

Trả về các cột cột có thể là một chút khó khăn

y[:, 0]

đầu ra

array([ 0,  7, 14, 21, 28, 35])

 

________số 8_______

đầu ra

array([ 3, 10, 17, 24, 31, 38])

Chỉ xuất một phần tử

Hãy xem cách trả về một số từ ma trận. Trả về số 17 từ ma trận này. Bắt đầu bằng cách tìm nó ở hàng nào. Ở hàng thứ ba có nghĩa là chỉ số của hàng là 2 khi số đếm bắt đầu từ 0. Tiếp theo nhìn vào chỉ số cột. Số 17 ở cột thứ tư. Vì vậy, chỉ số cột là 3

array([0, 1, 2, 3, 4, 5, 6])
0

đầu ra

array([0, 1, 2, 3, 4, 5, 6])
1

Nhận ba phần tử đầu tiên của cột thứ hai

Trong ma trận bên dưới, phần tử đích được in đậm. Tất cả các phần tử nằm ở hàng 1,2 và 3. Chỉ số hàng để sử dụng là 0. 3. Bước tiếp theo là tìm ra các cột. Ba yếu tố nằm trong cột thứ hai. Đó là, chỉ mục cột 1.  

array([0, 1, 2, 3, 4, 5, 6])
2

đầu ra

array([0, 1, 2, 3, 4, 5, 6])
3

01234567891011121314151617181920212223242526272829303132333435363738394041

Xuất một phần của các phần tử từ hai cột đầu tiên được hiển thị trong ma trận bên dưới

Tất cả các phần tử ở hàng 1,2 và 3. Chỉ số hàng để sử dụng là 1. 4. Các chỉ số cột tương ứng là 0 và 1. Vì vậy, các chỉ số cột có thể được biểu diễn bằng 0. 2

array([0, 1, 2, 3, 4, 5, 6])
4

Ra[40]

array([0, 1, 2, 3, 4, 5, 6])
5

01234567891011121314151617181920212223242526272829303132333435363738394041

Xuất mảng con ba nhân ba này (các phần tử in đậm trong ma trận) từ ma trận

Giải pháp cho điều này là lý thuyết giống như trước đây. Chỉ số hàng của các số là 2, 3 và 4. Vì vậy, chúng ta có thể cắt nó bằng 2. 5. Chỉ số cột cũng là 2,3 và 4. Một lát cột cũng có thể được lấy bằng 2. 5

array([0, 1, 2, 3, 4, 5, 6])
6

đầu ra

array([0, 1, 2, 3, 4, 5, 6])
7

01234567891011121314151617181920212223242526272829303132333435363738394041

In mọi hàng thứ hai từ đầu từ hàng đầu tiên

array([0, 1, 2, 3, 4, 5, 6])
8

Ra[42]

array([0, 1, 2, 3, 4, 5, 6])
9

0

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

32

33

34

35

36

37

38

39

40

41

Ở đây 0 là giới hạn dưới và 2 là khoảng. Đầu ra sẽ bắt đầu ở chỉ số 0 và tiếp tục cho đến hết với khoảng thời gian là 2. Điều đó có nghĩa là mỗi hàng thứ hai.  

In mọi cột khác bắt đầu từ cột đầu tiên

Trong mã bên dưới,  ‘. ' có nghĩa là chọn tất cả các chỉ mục. Đây '. ’ đang chọn tất cả các hàng. Là đầu vào cột, chúng tôi đặt 0. 2. Tôi đã đề cập đến chức năng của cái này ở trên

y[1]
0

Ra[43]

y[1]
1

0

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

32

33

34

35

36

37

38

39

40

41

Đây là một cách khác để làm điều tương tự. Trong mã dưới 0 là giới hạn dưới, 7 là giới hạn trên và 2 là khoảng. Đoạn mã dưới đây sẽ xuất ra cùng một ma trận như trên.  

y[. , 0. 7. 2]

Tôi đề nghị, hãy thử in mẫu như hình bên dưới

Đây là câu trả lời của tôi. Đầu tiên lấy các hàng. Đó là hàng thứ hai bắt đầu từ hàng 1 cho đến hết. Giới hạn dưới 1, giới hạn trên 6 và khoảng là 2. Tương tự, đối với cột, giới hạn dưới là 1, giới hạn trên là 6 và khoảng là 2

y[1]
2

đầu ra

y[1]
3

0

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

32

33

34

35

36

37

38

39

40

41

Có một cách khác để làm điều này. Trong đoạn mã dưới đây, 1 cho giới hạn dưới, 6 cho giới hạn trên (đối với các hàng, chúng tôi chỉ có hàng 0 đến hàng 5. Nhưng ta cần đặt giới hạn trên là 6 vì nếu đặt giới hạn trên là 6 thì ta sẽ được các phần tử của chỉ số 5) và 2 là khoảng. Nếu bạn để ý, chúng ta cần sử dụng cùng một công thức cho chỉ số cột

y[1]
2

đầu ra

y[1]
3

Cắt và lập chỉ mục mảng 3D

Hãy tạo một mảng ba chiều với đoạn mã dưới đây. Ở đây nó sẽ sắp xếp các số từ 0 đến 44 thành ba mảng hai chiều có dạng 3×5. Đầu ra sẽ trông như thế này

y[1]
6

đầu ra

y[1]
7

Chọn mảng hai chiều

Chúng ta có thể truy cập từng mảng hai chiều trong đó bằng cách lập chỉ mục đơn giản như sau

y[1]
8

đầu ra

y[1]
9

 

array([ 7,  8,  9, 10, 11, 12, 13])
0

đầu ra

array([ 7,  8,  9, 10, 11, 12, 13])
1

 

array([ 7,  8,  9, 10, 11, 12, 13])
2

đầu ra

array([ 7,  8,  9, 10, 11, 12, 13])
3

In hàng thứ hai của mảng hai chiều đầu tiên

Chọn mảng hai chiều đầu tiên theo cách chúng tôi đã trình bày trước đây với mã này. x[0]. Sau đó thêm phần này để chọn hàng thứ hai. x[0][1]

array([ 7,  8,  9, 10, 11, 12, 13])
4

đầu ra

array([ 7,  8,  9, 10, 11, 12, 13])
5

[[[ 0  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 32 33 34]

[35 36 37 38 39]

[40 41 42 43 44]]]

Lấy phần tử 22 từ mảng

Tôi sẽ giải quyết vấn đề này trong vài bước.  

Chọn mảng hai chiều có phần tử thứ 22. Đó là mảng hai chiều thứ hai. Vì vậy, hãy chọn nó bằng cách sử dụng x[1]

Tiếp theo xem chỉ số hàng ở đâu. Phần tử đích của chúng ta nằm ở hàng thứ hai của mảng hai chiều đã chọn. Chỉ số hàng là 1. Chúng ta có thể chọn hàng với mã này. x[1][1]

Cuối cùng, chỉ số cột là 2 vì từ hình trên cho thấy nó là phần tử thứ ba. kết hợp

array([ 7,  8,  9, 10, 11, 12, 13])
6

đầu ra

array([ 7,  8,  9, 10, 11, 12, 13])
7

Trả về các hàng đầu tiên của hai mảng hai chiều cuối cùng.  

Đầu tiên chọn mảng hai chiều chứa các hàng này. Một hàng nằm trong mảng hai chiều thứ hai và một hàng khác nằm trong mảng hai chiều thứ ba. Chúng ta có thể chọn hai cái này với x[1. ]. Vì cả hai hàng đều là hàng đầu tiên của mảng hai chiều tương ứng nên chỉ số hàng bằng không.   

array([ 7,  8,  9, 10, 11, 12, 13])
8

đầu ra

array([ 7,  8,  9, 10, 11, 12, 13])
9

[[[ 0  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 32 33 34]

[35 36 37 38 39]

[40 41 42 43 44]]]

Cắt qua cả cột và hàng và in một phần của hai hàng đầu tiên của hai mảng hai chiều cuối cùng

Giống như bài toán trước, tất cả các phần tử đích nằm trong mảng hai chiều thứ hai và thứ ba. Vì vậy, chúng ta có thể chọn chúng như trước với x[1. ]. Tất cả các phần tử đều ở hàng thứ nhất và thứ hai của cả mảng hai chiều. Chỉ mục hàng phải được biểu thị bằng 0. 2. Chỉ số cột là 1. 4 vì các phần tử nằm trong cột thứ nhất, thứ hai và thứ ba. Kết hợp tất cả lại với nhau

Làm cách nào để chuyển đổi mảng 1d thành mảng 2d trong Python?

chuyển mảng 1 chiều thành mảng 2 chiều bằng cách thêm trục mới . a=np. mảng([10,20,30,40,50,60]) b=a[. ,np. newaxis]--nó sẽ chuyển đổi nó thành hai chiều.

Làm cách nào để thay đổi mảng 1d thành mảng 2d?

Làm cách nào để chuyển đổi mảng bộ dữ liệu 1d thành mảng numpy 2d? . by using "np. reshape() " chức năng này chúng ta có thể đạt được điều này.

Logic chính xác để chuyển đổi một mảng các mảng thành một mảng 1d phẳng trong NumPy là gì?

Làm phẳng mảng mảng NumPy . use the np. nối (mảng). gọi hàm ravel() . Kết quả sẽ là một mảng các giá trị NumPy phẳng một chiều (1D).