Hướng dẫn index of 2d array python - chỉ mục của python mảng 2d
Tôi cần tìm ra làm thế nào tôi có thể tìm thấy tất cả các chỉ mục của một giá trị trong một mảng 2D. Show
Ví dụ: tôi có mảng 2D sau:
Tôi cần tìm chỉ số của tất cả các 1 và 0.
Tôi đã thử điều này nhưng nó không cung cấp cho tôi tất cả các chỉ mục:
Về cơ bản, nó chỉ cung cấp cho tôi một trong các chỉ mục trong mỗi hàng from array import * T = [[11, 12, 5, 2], [15, 6,10], [10, 8, 12, 5], [12,15,8,6]] print(T[0]) print(T[1][2])8. Mảng hai chiều là một mảng trong một mảng. Nó là một mảng các mảng. Trong loại mảng này, vị trí của một phần tử dữ liệu được giới thiệu bởi hai chỉ số thay vì một. Vì vậy, nó đại diện cho một bảng với các hàng một dcolumns dữ liệu. Trong ví dụ dưới đây của một mảng hai chiều, người quan sát rằng mỗi phần tử mảng cũng là một mảng. Hãy xem xét ví dụ về nhiệt độ ghi 4 lần một ngày, mỗi ngày. Đôi khi công cụ ghi âm có thể bị lỗi và chúng tôi không ghi dữ liệu. Dữ liệu như vậy trong 4 ngày có thể được trình bày dưới dạng mảng hai chiều như dưới đây. Day 1 - 11 12 5 2 Day 2 - 15 6 10 Day 3 - 10 8 12 5 Day 4 - 12 15 8 6 Dữ liệu trên có thể được biểu diễn dưới dạng mảng hai chiều như dưới đây. T = [[11, 12, 5, 2], [15, 6,10], [10, 8, 12, 5], [12,15,8,6]] Truy cập các giá trịCác yếu tố dữ liệu trong hai mảng dimesnional có thể được truy cập bằng hai chỉ số. Một chỉ mục đề cập đến mảng chính hoặc cha mẹ và một chỉ mục khác đề cập đến vị trí của phần tử dữ liệu trong mảng bên trong. Nếu chúng tôi chỉ đề cập đến một chỉ mục thì toàn bộ mảng bên trong được in cho vị trí chỉ mục đó. Thí dụVí dụ dưới đây minh họa cách nó hoạt động. from array import * T = [[11, 12, 5, 2], [15, 6,10], [10, 8, 12, 5], [12,15,8,6]] print(T[0]) print(T[1][2]) Đầu raKhi mã trên được thực thi, nó sẽ tạo ra kết quả sau - [11, 12, 5, 2] 10 Để in ra toàn bộ mảng hai chiều, chúng ta có thể sử dụng Python cho vòng lặp như hình dưới đây. Chúng tôi sử dụng cuối dòng để in ra các giá trị trong các hàng khác nhau. Thí dụfrom array import * T = [[11, 12, 5, 2], [15, 6,10], [10, 8, 12, 5], [12,15,8,6]] for r in T: for c in r: print(c,end = " ") print() Đầu raKhi mã trên được thực thi, nó sẽ tạo ra kết quả sau - 11 12 5 2 15 6 10 10 8 12 5 12 15 8 6 Để in ra toàn bộ mảng hai chiều, chúng ta có thể sử dụng Python cho vòng lặp như hình dưới đây. Chúng tôi sử dụng cuối dòng để in ra các giá trị trong các hàng khác nhau.Chúng ta có thể chèn các phần tử dữ liệu mới ở vị trí cụ thể bằng cách sử dụng phương thức chèn () và chỉ định chỉ mục. Thí dụTrong ví dụ dưới đây, một phần tử dữ liệu mới được chèn tại vị trí chỉ mục 2. from array import * T = [[11, 12, 5, 2], [15, 6,10], [10, 8, 12, 5], [12,15,8,6]] T.insert(2, [0,5,11,13,6]) for r in T: for c in r: print(c,end = " ") print() Đầu raKhi mã trên được thực thi, nó sẽ tạo ra kết quả sau - 0Cập nhật giá trịChúng ta có thể cập nhật toàn bộ mảng bên trong hoặc một số phần tử dữ liệu cụ thể của mảng bên trong bằng cách chỉ định lại các giá trị bằng chỉ mục mảng. Thí dụ 1Đầu raKhi mã trên được thực thi, nó sẽ tạo ra kết quả sau - 2Cập nhật giá trịChúng ta có thể cập nhật toàn bộ mảng bên trong hoặc một số phần tử dữ liệu cụ thể của mảng bên trong bằng cách chỉ định lại các giá trị bằng chỉ mục mảng. Thí dụ 3Đầu raKhi mã trên được thực thi, nó sẽ tạo ra kết quả sau - 4 from array import * T = [[11, 12, 5, 2], [15, 6,10], [10, 8, 12, 5], [12,15,8,6]] print(T[0]) print(T[1][2])9 có thể được lập chỉ mục bằng cú pháp Python [11, 12, 5, 2] 100 tiêu chuẩn, trong đó X là mảng và obj lựa chọn. Có nhiều loại lập chỉ mục khác nhau có sẵn tùy thuộc vào OBJ: lập chỉ mục cơ bản, lập chỉ mục nâng cao và truy cập hiện trường. Hầu hết các ví dụ sau đây cho thấy việc sử dụng lập chỉ mục khi tham chiếu dữ liệu trong một mảng. Các ví dụ cũng hoạt động tốt khi gán cho một mảng. Xem gán giá trị cho các mảng được lập chỉ mục cho các ví dụ và giải thích cụ thể về cách thức hoạt động của bài tập.Assigning values to indexed arrays for specific examples and explanations on how assignments work. Lưu ý rằng trong Python, [11, 12, 5, 2] 101 tương đương với [11, 12, 5, 2] 102; Cái sau chỉ là đường cú pháp cho cái trước. Lập chỉ mục cơ bản#Lập chỉ mục phần tử đơn#Lập chỉ mục phần tử duy nhất hoạt động chính xác như thế đối với các chuỗi Python tiêu chuẩn khác. Đó là dựa trên 0 và chấp nhận các chỉ số tiêu cực để lập chỉ mục từ cuối mảng. 5Không cần thiết phải tách từng chỉ số kích thước trên các dấu ngoặc vuông của riêng mình. 6Lưu ý rằng nếu một người lập chỉ mục một mảng đa chiều với ít chỉ số hơn kích thước, người ta sẽ nhận được một mảng hai chiều. Ví dụ: 7Nghĩa là, mỗi chỉ mục được chỉ định chọn mảng tương ứng với phần còn lại của các kích thước được chọn. Trong ví dụ trên, việc chọn 0 có nghĩa là kích thước còn lại của chiều dài 5 không được xác định và những gì được trả về là một mảng có kích thước và kích thước đó. Cần lưu ý rằng mảng được trả về là một chế độ xem, tức là, nó không phải là bản sao của bản gốc, mà chỉ vào cùng các giá trị trong bộ nhớ cũng như mảng gốc. Trong trường hợp này, mảng 1-D ở vị trí đầu tiên (0) được trả về. Vì vậy, sử dụng một chỉ mục duy nhất trên mảng được trả về, kết quả là một phần tử được trả về. Đó là:view, i.e., it is not a copy of the original, but points to the same values in memory as does the original array. In this case, the 1-D array at the first position (0) is returned. So using a single index on the returned array, results in a single element being returned. That is: Vì vậy, lưu ý rằng [11, 12, 5, 2] 103 mặc dù trường hợp thứ hai không hiệu quả hơn khi một mảng tạm thời mới được tạo sau chỉ số đầu tiên sau đó được lập chỉ mục bởi 2. Ghi chú Numpy sử dụng lập chỉ mục thứ tự C. Điều đó có nghĩa là chỉ số cuối cùng thường đại diện cho vị trí bộ nhớ thay đổi nhanh nhất, không giống như Fortran hoặc IDL, trong đó chỉ số đầu tiên thể hiện vị trí thay đổi nhanh nhất trong bộ nhớ. Sự khác biệt này đại diện cho một tiềm năng lớn cho sự nhầm lẫn. Cắt và sải#Việc cắt cơ bản mở rộng khái niệm cơ bản của Python về việc cắt thành kích thước N. Việc cắt cơ bản xảy ra khi OBJ là đối tượng [11, 12, 5, 2] 104 (được xây dựng bởi ký hiệu [11, 12, 5, 2] 105 bên trong dấu ngoặc), một số nguyên hoặc một bộ đồ của các đối tượng và số nguyên. Các đối tượng [11, 12, 5, 2] 106 và [11, 12, 5, 2] 107 cũng có thể được xen kẽ với những đối tượng này. Trường hợp đơn giản nhất của việc lập chỉ mục với N số nguyên trả về một vô hướng mảng đại diện cho mục tương ứng. Như trong Python, tất cả các chỉ số đều dựa trên 0: Đối với chỉ mục thứ i \ (n_i \), phạm vi hợp lệ là \ (0 \ le n_i Tất cả các mảng được tạo bằng cách cắt cơ bản luôn là chế độ xem của mảng gốc.views of the original array. Ghi chú Numpy sử dụng lập chỉ mục thứ tự C. Điều đó có nghĩa là chỉ số cuối cùng thường đại diện cho vị trí bộ nhớ thay đổi nhanh nhất, không giống như Fortran hoặc IDL, trong đó chỉ số đầu tiên thể hiện vị trí thay đổi nhanh nhất trong bộ nhớ. Sự khác biệt này đại diện cho một tiềm năng lớn cho sự nhầm lẫn.view instead of a copy as in the case of built-in Python sequences such as string, tuple and list. Care must be taken when extracting a small portion from a large array which becomes useless after the extraction, because the small portion extracted contains a reference to the large original array whose memory will not be released until all arrays derived from it are garbage-collected. In such cases an explicit [11, 12, 5, 2] 108 is recommended. Các quy tắc tiêu chuẩn về cắt trình tự áp dụng cho việc cắt cơ bản trên cơ sở mỗi chiều (bao gồm cả việc sử dụng chỉ số bước). Một số khái niệm hữu ích cần nhớ bao gồm:
Công cụ lập chỉ mục thứ nguyên#Có một số công cụ để tạo điều kiện cho việc khớp dễ dàng các hình dạng mảng với các biểu thức và trong các bài tập. [11, 12, 5, 2] 106 mở rộng đến số lượng đối tượng from array import * T = [[11, 12, 5, 2], [15, 6,10], [10, 8, 12, 5], [12,15,8,6]] for r in T: for c in r: print(c,end = " ") print()1 cần thiết cho bộ phận lựa chọn để lập chỉ mục tất cả các kích thước. Trong hầu hết các trường hợp, điều này có nghĩa là độ dài của bộ giảm chọn lựa chọn mở rộng là from array import * T = [[11, 12, 5, 2], [15, 6,10], [10, 8, 12, 5], [12,15,8,6]] T.insert(2, [0,5,11,13,6]) for r in T: for c in r: print(c,end = " ") print()2. Chỉ có thể có một dấu chấm lửng duy nhất. Từ ví dụ trên: 2Điều này tương đương với: 3Mỗi đối tượng [11, 12, 5, 2] 107 trong Tuple lựa chọn phục vụ để mở rộng kích thước của lựa chọn kết quả theo một kích thước một đơn vị. Kích thước được thêm vào là vị trí của đối tượng [11, 12, 5, 2] 107 trong bộ phận chọn. [11, 12, 5, 2] 107 là bí danh cho from array import * T = [[11, 12, 5, 2], [15, 6,10], [10, 8, 12, 5], [12,15,8,6]] T.insert(2, [0,5,11,13,6]) for r in T: for c in r: print(c,end = " ") print()6 và from array import * T = [[11, 12, 5, 2], [15, 6,10], [10, 8, 12, 5], [12,15,8,6]] T.insert(2, [0,5,11,13,6]) for r in T: for c in r: print(c,end = " ") print()6 có thể được sử dụng thay cho điều này với kết quả tương tự. Từ ví dụ trên: 4Điều này có thể tiện dụng để kết hợp hai mảng theo cách mà nếu không sẽ yêu cầu các hoạt động định hình lại rõ ràng. Ví dụ: 5Lập chỉ mục nâng cao#Lập chỉ mục nâng cao được kích hoạt khi đối tượng lựa chọn, OBJ, là một đối tượng chuỗi không phải là tuple, from array import * T = [[11, 12, 5, 2], [15, 6,10], [10, 8, 12, 5], [12,15,8,6]] T.insert(2, [0,5,11,13,6]) for r in T: for c in r: print(c,end = " ") print()8 (của số nguyên kiểu dữ liệu hoặc bool) hoặc một tuple có ít nhất một đối tượng chuỗi hoặc ndarray (của số nguyên loại dữ liệu hoặc bool). Có hai loại lập chỉ mục nâng cao: Số nguyên và Boolean. Lập chỉ mục nâng cao luôn trả về một bản sao của dữ liệu (tương phản với việc cắt cơ bản trả về chế độ xem).view). Cảnh báo Trên đây không đúng cho việc lập chỉ mục nâng cao. Cũng nhận ra rằng 02 sẽ kích hoạt lập chỉ mục nâng cao, trong khi do khả năng tương thích số không dùng được đề cập ở trên, 03 sẽ kích hoạt cắt cơ bản.Chỉ mục mảng số nguyên#Lập chỉ mục mảng số nguyên cho phép lựa chọn các mục tùy ý trong mảng dựa trên chỉ mục N chiều của chúng. Mỗi mảng số nguyên đại diện cho một số chỉ số vào kích thước đó. Các giá trị âm được cho phép trong các mảng chỉ mục và hoạt động như chúng với các chỉ số hoặc lát cắt đơn: 6Nếu các giá trị chỉ mục nằm ngoài giới hạn thì 04 sẽ bị ném: 7Khi chỉ số bao gồm nhiều mảng số nguyên như kích thước của mảng được lập chỉ mục, việc lập chỉ mục rất đơn giản, nhưng khác với việc cắt. Các chỉ số nâng cao luôn được phát và lặp lại như một:broadcast and iterated as one: 8Lưu ý rằng hình dạng kết quả giống hệt với hình dạng mảng (phát) (phát sóng) 05. Nếu các chỉ số không thể được phát theo cùng một hình dạng, một ngoại lệ 06 sẽ được nâng lên.Lập chỉ mục với các mảng chỉ số đa chiều có xu hướng sử dụng bất thường hơn, nhưng chúng được phép và chúng hữu ích cho một số vấn đề. Chúng tôi sẽ bắt đầu với trường hợp đa chiều đơn giản nhất: 9Trong trường hợp này, nếu các mảng chỉ mục có hình dạng phù hợp và có một mảng chỉ mục cho mỗi chiều của mảng được lập chỉ mục, mảng kết quả có hình dạng giống như các mảng chỉ mục và các giá trị tương ứng với chỉ số cho mỗi Vị trí trong các mảng chỉ mục. Trong ví dụ này, giá trị chỉ mục đầu tiên là 0 cho cả hai mảng chỉ mục và do đó giá trị đầu tiên của mảng kết quả là 07. Giá trị tiếp theo là 08 và cuối cùng là 09.Nếu các mảng chỉ mục không có hình dạng giống nhau, có một nỗ lực để phát chúng đến cùng một hình dạng. Nếu chúng không thể được phát theo cùng một hình dạng, một ngoại lệ sẽ được nâng lên: Day 1 - 11 12 5 2 Day 2 - 15 6 10 Day 3 - 10 8 12 5 Day 4 - 12 15 8 60 Cơ chế phát sóng cho phép các mảng chỉ số được kết hợp với vô hướng cho các chỉ số khác. Hiệu ứng là giá trị vô hướng được sử dụng cho tất cả các giá trị tương ứng của các mảng chỉ mục: Day 1 - 11 12 5 2 Day 2 - 15 6 10 Day 3 - 10 8 12 5 Day 4 - 12 15 8 61 Nhảy lên cấp độ phức tạp tiếp theo, chỉ có thể chỉ một phần một mảng với các mảng chỉ mục. Phải mất một chút suy nghĩ để hiểu những gì xảy ra trong những trường hợp như vậy. Ví dụ: nếu chúng ta chỉ sử dụng một mảng chỉ mục với Y: Day 1 - 11 12 5 2 Day 2 - 15 6 10 Day 3 - 10 8 12 5 Day 4 - 12 15 8 62 Nó dẫn đến việc xây dựng một mảng mới trong đó mỗi giá trị của mảng chỉ mục chọn một hàng từ mảng được lập chỉ mục và mảng kết quả có hình dạng kết quả (số phần tử chỉ mục, kích thước của hàng). Nói chung, hình dạng của mảng kết quả sẽ là sự kết hợp của hình dạng của mảng chỉ mục (hoặc hình dạng mà tất cả các mảng chỉ mục được phát) với hình dạng của bất kỳ kích thước không sử dụng nào (những thứ không được lập chỉ mục) trong mảng được lập chỉ mục . Thí dụ Từ mỗi hàng, một yếu tố cụ thể nên được chọn. Chỉ mục hàng chỉ là 10 và chỉ mục cột chỉ định phần tử để chọn cho hàng tương ứng, ở đây 11. Sử dụng cả hai cùng nhau, nhiệm vụ có thể được giải quyết bằng cách sử dụng lập chỉ mục nâng cao:Day 1 - 11 12 5 2 Day 2 - 15 6 10 Day 3 - 10 8 12 5 Day 4 - 12 15 8 63 Để đạt được một hành vi tương tự như cắt cơ bản ở trên, việc phát sóng có thể được sử dụng. Hàm 12 có thể giúp phát sóng này. Điều này được hiểu rõ nhất với một ví dụ.Thí dụ Từ mỗi hàng, một yếu tố cụ thể nên được chọn. Chỉ mục hàng chỉ là 10 và chỉ mục cột chỉ định phần tử để chọn cho hàng tương ứng, ở đây 11. Sử dụng cả hai cùng nhau, nhiệm vụ có thể được giải quyết bằng cách sử dụng lập chỉ mục nâng cao:Day 1 - 11 12 5 2 Day 2 - 15 6 10 Day 3 - 10 8 12 5 Day 4 - 12 15 8 64 Để đạt được một hành vi tương tự như cắt cơ bản ở trên, việc phát sóng có thể được sử dụng. Hàm 12 có thể giúp phát sóng này. Điều này được hiểu rõ nhất với một ví dụ.Day 1 - 11 12 5 2 Day 2 - 15 6 10 Day 3 - 10 8 12 5 Day 4 - 12 15 8 65 Từ một mảng 4x3, các phần tử góc nên được chọn bằng cách sử dụng lập chỉ mục nâng cao. Do đó, tất cả các phần tử mà cột là một trong 13 và hàng là một trong số 14 cần được chọn. Để sử dụng lập chỉ mục nâng cao, người ta cần chọn tất cả các yếu tố một cách rõ ràng. Sử dụng phương thức được giải thích trước đây người ta có thể viết:Day 1 - 11 12 5 2 Day 2 - 15 6 10 Day 3 - 10 8 12 5 Day 4 - 12 15 8 66 Tuy nhiên, vì các mảng lập chỉ mục ở trên chỉ lặp lại, việc phát sóng có thể được sử dụng (so sánh các hoạt động như 15) để đơn giản hóa điều này:Day 1 - 11 12 5 2 Day 2 - 15 6 10 Day 3 - 10 8 12 5 Day 4 - 12 15 8 67 Phát sóng này cũng có thể đạt được bằng cách sử dụng chức năng 12:Thí dụ Từ mỗi hàng, một yếu tố cụ thể nên được chọn. Chỉ mục hàng chỉ là 10 và chỉ mục cột chỉ định phần tử để chọn cho hàng tương ứng, ở đây 11. Sử dụng cả hai cùng nhau, nhiệm vụ có thể được giải quyết bằng cách sử dụng lập chỉ mục nâng cao:Để đạt được một hành vi tương tự như cắt cơ bản ở trên, việc phát sóng có thể được sử dụng. Hàm 1: [(0, 0), (0, 1), (1, 2), (1, 3)] 0: [(0, 2), (0, 3), (1, 0), (1, 1), (the entire all row)] 12 có thể giúp phát sóng này. Điều này được hiểu rõ nhất với một ví dụ.Từ một mảng 4x3, các phần tử góc nên được chọn bằng cách sử dụng lập chỉ mục nâng cao. Do đó, tất cả các phần tử mà cột là một trong 13 và hàng là một trong số 14 cần được chọn. Để sử dụng lập chỉ mục nâng cao, người ta cần chọn tất cả các yếu tố một cách rõ ràng. Sử dụng phương thức được giải thích trước đây người ta có thể viết:Nếu 23, [11, 12, 5, 2] 100 trả về một mảng 1 chiều chứa đầy các phần tử của X tương ứng với các giá trị 21 của OBJ. Thứ tự tìm kiếm sẽ là Major, kiểu C. Nếu OBJ có các giá trị 21 tại các mục nằm ngoài giới hạn của X, thì lỗi chỉ mục sẽ được nêu ra. Nếu OBJ nhỏ hơn x, nó giống hệt nhau để điền vào nó bằng 27.row-major, C-style. If obj has 21 values at entries that are outside of the bounds of x, then an index error will be raised. If obj is smaller than x it is identical to filling it with
27.Một trường hợp sử dụng phổ biến cho điều này là lọc cho các giá trị phần tử mong muốn. Ví dụ: người ta có thể muốn chọn tất cả các mục từ một mảng không phải là 28:Day 1 - 11 12 5 2 Day 2 - 15 6 10 Day 3 - 10 8 12 5 Day 4 - 12 15 8 68 Hoặc muốn thêm một hằng số cho tất cả các yếu tố tiêu cực: Day 1 - 11 12 5 2 Day 2 - 15 6 10 Day 3 - 10 8 12 5 Day 4 - 12 15 8 69 Nói chung nếu một chỉ số bao gồm một mảng boolean, kết quả sẽ giống hệt với việc chèn 19 vào cùng một vị trí và sử dụng cơ chế lập chỉ mục mảng số nguyên được mô tả ở trên. 30 tương đương với 31.Nếu chỉ có một mảng boolean và không có mảng lập chỉ số số nguyên thì điều này rất đơn giản. Chỉ cần cẩn thận để đảm bảo rằng chỉ số Boolean có chính xác nhiều kích thước như nó được cho là hoạt động. Nói chung, khi mảng boolean có ít kích thước hơn mảng được lập chỉ mục, điều này tương đương với 32, có nghĩa là x được lập chỉ mục bởi B theo sau bởi nhiều from array import * T = [[11, 12, 5, 2], [15, 6,10], [10, 8, 12, 5], [12,15,8,6]] for r in T: for c in r: print(c,end = " ") print()1 cần thiết để điền vào thứ hạng của x. Do đó, hình dạng của kết quả là một chiều chứa số lượng các phần tử thực của mảng boolean, theo sau là các kích thước còn lại của mảng được lập chỉ mục: T = [[11, 12, 5, 2], [15, 6,10], [10, 8, 12, 5], [12,15,8,6]]0 Ở đây, các hàng thứ 4 và 5 được chọn từ mảng được lập chỉ mục và kết hợp để tạo ra một mảng 2 chiều. Thí dụ Từ một mảng, chọn tất cả các hàng tổng hợp hơn hoặc bằng hai: T = [[11, 12, 5, 2], [15, 6,10], [10, 8, 12, 5], [12,15,8,6]]1 Kết hợp nhiều mảng lập chỉ mục boolean hoặc boolean với một mảng lập chỉ số số nguyên có thể được hiểu rõ nhất với sự tương tự 19. Chức năng 12 cũng hỗ trợ các mảng Boolean và sẽ hoạt động mà không có bất ngờ.Thí dụ Từ một mảng, chọn tất cả các hàng tổng hợp hơn hoặc bằng hai: T = [[11, 12, 5, 2], [15, 6,10], [10, 8, 12, 5], [12,15,8,6]]2 Kết hợp nhiều mảng lập chỉ mục boolean hoặc boolean với một mảng lập chỉ số số nguyên có thể được hiểu rõ nhất với sự tương tự 19. Chức năng 12 cũng hỗ trợ các mảng Boolean và sẽ hoạt động mà không có bất ngờ.Sử dụng lập chỉ mục Boolean để chọn tất cả các hàng thêm vào một số chẵn. Đồng thời các cột 0 và 2 nên được chọn với một chỉ mục số nguyên nâng cao. Sử dụng chức năng 12 Điều này có thể được thực hiện với:T = [[11, 12, 5, 2], [15, 6,10], [10, 8, 12, 5], [12,15,8,6]]3 Thí dụ Từ một mảng, chọn tất cả các hàng tổng hợp hơn hoặc bằng hai: T = [[11, 12, 5, 2], [15, 6,10], [10, 8, 12, 5], [12,15,8,6]]4 Kết hợp nhiều mảng lập chỉ mục boolean hoặc boolean với một mảng lập chỉ số số nguyên có thể được hiểu rõ nhất với sự tương tự 1: [(0, 0), (0, 1), (1, 2), (1, 3)] 0: [(0, 2), (0, 3), (1, 0), (1, 1), (the entire all row)] 19. Chức năng 1: [(0, 0), (0, 1), (1, 2), (1, 3)] 0: [(0, 2), (0, 3), (1, 0), (1, 1), (the entire all row)] 12 cũng hỗ trợ các mảng Boolean và sẽ hoạt động mà không có bất ngờ.Sử dụng lập chỉ mục Boolean để chọn tất cả các hàng thêm vào một số chẵn. Đồng thời các cột 0 và 2 nên được chọn với một chỉ mục số nguyên nâng cao. Sử dụng chức năng 12 Điều này có thể được thực hiện với:Nếu không có cuộc gọi 17, chỉ các phần tử chéo sẽ được chọn.T = [[11, 12, 5, 2], [15, 6,10], [10, 8, 12, 5], [12,15,8,6]]5 Hoặc không có 17 (so sánh các ví dụ mảng số nguyên):T = [[11, 12, 5, 2], [15, 6,10], [10, 8, 12, 5], [12,15,8,6]]6 Sử dụng một mảng hình dạng boolean 2 chiều (2, 3) với bốn phần tử thực để chọn các hàng từ một mảng hình dạng 3 chiều (2, 3, 5) dẫn đến kết quả 2 chiều của hình dạng (4, 5) : T = [[11, 12, 5, 2], [15, 6,10], [10, 8, 12, 5], [12,15,8,6]]7 Kết hợp lập chỉ mục nâng cao và cơ bản#
Trong thực tế, hoạt động mảng lát và chỉ số là độc lập. Hoạt động lát cắt trích xuất các cột có chỉ số 1 và 2, (nghĩa là cột thứ 2 và 3), tiếp theo là hoạt động mảng chỉ mục trích xuất các hàng có chỉ mục 0, 2 và 4 (tức là các hàng thứ nhất, thứ ba và thứ năm). Điều này tương đương với: Thí dụ Từ một mảng, chọn tất cả các hàng tổng hợp hơn hoặc bằng hai: Thí dụ Đặt 48 là (10, 20, 30, 40, 50) và giả sử 55 và 56 có thể được phát ra hình dạng (2, 3, 4). Sau đó, 57 có hình dạng (10, 2, 3, 4, 40, 50) vì không gian con (20, 30) từ X đã được thay thế bằng không gian con (2, 3, 4) từ các chỉ số. Tuy nhiên, 58 có hình dạng (2, 3, 4, 10, 30, 50) vì không có nơi nào không rõ ràng để thả trong không gian con lập chỉ mục, do đó nó được giải quyết đến đầu. Luôn luôn có thể sử dụng 59 để di chuyển không gian con ở bất cứ nơi nào mong muốn. Lưu ý rằng ví dụ này không thể được nhân rộng bằng cách sử dụng 60.Thí dụ Cắt lát có thể được kết hợp với các chỉ số boolean được phát sóng: T = [[11, 12, 5, 2], [15, 6,10], [10, 8, 12, 5], [12,15,8,6]]8 Truy cập trường#Nếu đối tượng from array import * T = [[11, 12, 5, 2], [15, 6,10], [10, 8, 12, 5], [12,15,8,6]] T.insert(2, [0,5,11,13,6]) for r in T: for c in r: print(c,end = " ") print()8 là một mảng có cấu trúc, các trường của mảng có thể được truy cập bằng cách lập chỉ mục cho mảng với các chuỗi, giống như từ điển.fields of the array can be accessed by indexing the array with strings, dictionary-like. Lập chỉ mục 62 trả về một chế độ xem mới cho mảng, có hình dạng giống như X (ngoại trừ khi trường là một mảng phụ) nhưng loại dữ liệu 63 và chỉ chứa một phần của dữ liệu trong trường được chỉ định. Ngoài ra, Record Array Scalar có thể được lập chỉ mục theo cách này.view to the array, which is of
the same shape as x (except when the field is a sub-array) but of data type 63 and contains only the part of the data in the specified field. Also, record array scalars can be “indexed” this way.Lập chỉ mục vào một mảng có cấu trúc cũng có thể được thực hiện với một danh sách các tên trường, ví dụ: 64. Kể từ Numpy 1.16, điều này trả về một chế độ xem chỉ chứa các trường đó. Trong các phiên bản cũ hơn của Numpy, nó đã trả lại một bản sao. Xem phần Hướng dẫn sử dụng trên các mảng có cấu trúc để biết thêm thông tin về lập chỉ mục đa năng.Structured arrays for more information on multifield indexing.Nếu trường truy cập là một mảng con, kích thước của mảng con được nối với hình dạng của kết quả. Ví dụ: T = [[11, 12, 5, 2], [15, 6,10], [10, 8, 12, 5], [12,15,8,6]]9 Lập chỉ mục Iterator phẳng# 65 trả về một trình lặp sẽ lặp lại trên toàn bộ mảng (theo kiểu liên tục C với chỉ số cuối cùng thay đổi nhanh nhất). Đối tượng lặp này cũng có thể được lập chỉ mục bằng cách cắt lát cơ bản hoặc lập chỉ mục nâng cao miễn là đối tượng lựa chọn không phải là một tuple. Điều này nên rõ ràng từ thực tế là 65 là quan điểm 1 chiều. Nó có thể được sử dụng để lập chỉ mục số nguyên với các chỉ số-phẳng kiểu C 1 chiều. Do đó, hình dạng của bất kỳ mảng nào được trả về là hình dạng của đối tượng lập chỉ mục.Gán các giá trị cho các mảng được lập chỉ mục#Như đã đề cập, người ta có thể chọn một tập hợp con của một mảng để gán cho việc sử dụng một chỉ mục, lát cắt và chỉ mục và mảng mặt nạ. Giá trị được gán cho mảng được lập chỉ mục phải có hình dạng nhất quán (cùng một hình dạng hoặc có thể phát sóng theo hình dạng mà chỉ số tạo ra). Ví dụ, nó được phép gán một hằng số cho một lát: from array import * T = [[11, 12, 5, 2], [15, 6,10], [10, 8, 12, 5], [12,15,8,6]] print(T[0]) print(T[1][2])0 hoặc một mảng có kích thước phù hợp: from array import * T = [[11, 12, 5, 2], [15, 6,10], [10, 8, 12, 5], [12,15,8,6]] print(T[0]) print(T[1][2])1 Lưu ý rằng các bài tập có thể dẫn đến các thay đổi nếu gán các loại cao hơn cho các loại thấp hơn (như phao cho INT) hoặc thậm chí các ngoại lệ (gán phức tạp cho phao hoặc INT): from array import * T = [[11, 12, 5, 2], [15, 6,10], [10, 8, 12, 5], [12,15,8,6]] print(T[0]) print(T[1][2])2 Không giống như một số tài liệu tham khảo (chẳng hạn như các chỉ số mảng và mặt nạ) luôn được thực hiện cho dữ liệu gốc trong mảng (thực sự, không có gì khác có ý nghĩa!). Lưu ý mặc dù, một số hành động có thể không hoạt động như người ta có thể mong đợi ngây thơ. Ví dụ cụ thể này thường gây ngạc nhiên cho mọi người: from array import * T = [[11, 12, 5, 2], [15, 6,10], [10, 8, 12, 5], [12,15,8,6]] print(T[0]) print(T[1][2])3 Trường hợp mọi người mong đợi rằng vị trí đầu tiên sẽ được tăng lên 3. Trên thực tế, nó sẽ chỉ được tăng thêm 1. Lý do là một mảng mới được trích xuất từ bản gốc (như tạm thời) chứa các giá trị ở 1, 1, 3 , 1, sau đó giá trị 1 được thêm vào tạm thời, và sau đó tạm thời được gán lại cho mảng ban đầu. Do đó, giá trị của mảng tại 67 được gán cho 68 ba lần, thay vì tăng 3 lần.Xử lý số lượng chỉ số biến trong các chương trình#Cú pháp lập chỉ mục rất mạnh mẽ nhưng hạn chế khi xử lý một số lượng chỉ số khác nhau. Ví dụ: nếu bạn muốn viết một hàm có thể xử lý các đối số với số lượng kích thước khác nhau mà không phải viết mã trường hợp đặc biệt cho mỗi số lượng kích thước có thể, làm thế nào có thể được thực hiện? Nếu một người cung cấp cho chỉ mục một tuple, tuple sẽ được hiểu là danh sách các chỉ số. Ví dụ: from array import * T = [[11, 12, 5, 2], [15, 6,10], [10, 8, 12, 5], [12,15,8,6]] print(T[0]) print(T[1][2])4 Vì vậy, người ta có thể sử dụng mã để xây dựng các bộ dữ liệu của bất kỳ số lượng chỉ số nào và sau đó sử dụng chúng trong một chỉ mục. Các lát cắt có thể được chỉ định trong các chương trình bằng cách sử dụng hàm Slice () trong Python. Ví dụ: from array import * T = [[11, 12, 5, 2], [15, 6,10], [10, 8, 12, 5], [12,15,8,6]] print(T[0]) print(T[1][2])5 Tương tự như vậy, Ellipsis có thể được chỉ định bằng mã bằng cách sử dụng đối tượng Ellipsis: from array import * T = [[11, 12, 5, 2], [15, 6,10], [10, 8, 12, 5], [12,15,8,6]] print(T[0]) print(T[1][2])6 Vì lý do này, có thể sử dụng đầu ra từ hàm 69 trực tiếp làm chỉ mục vì nó luôn trả về một mảng chỉ mục.Do sự đối xử đặc biệt của các bộ dữ liệu, chúng không được chuyển đổi tự động thành một mảng như một danh sách. Ví dụ: from array import * T = [[11, 12, 5, 2], [15, 6,10], [10, 8, 12, 5], [12,15,8,6]] print(T[0]) print(T[1][2])7 Ghi chú chi tiết#Đây là một số ghi chú chi tiết, không quan trọng đối với việc lập chỉ mục hàng ngày (không theo thứ tự cụ thể):
Làm thế nào để bạn tìm thấy chỉ số của một phần tử trong một mảng 2D trong Python?Chỉ số phần tử trong mảng 2D, chúng ta cũng có thể sử dụng hàm np.where () để tìm vị trí/chỉ số xuất hiện của các phần tử trong một mảng hai chiều hoặc đa chiều.Đối với một mảng 2D, tuple được trả về sẽ chứa hai mảng numpy một cho các hàng và cái còn lại cho các cột.use the np. where() function to find the position/index of occurrences of elements in a two-dimensional or multidimensional array. For a 2D array, the returned tuple will contain two numpy arrays one for the rows and the other for the columns.
Làm cách nào để tìm chỉ mục của một mảng 2D?Một phần tử trong mảng 2 chiều được truy cập bằng cách sử dụng các chỉ số.Nghĩa là, chỉ mục hàng và chỉ mục cột của mảng.int x = a [1,1];Bảng điều khiển.WriteLine (x);by using the subscripts. That is, row index and column index of the array. int x = a[1,1]; Console. WriteLine(x);
Làm thế nào để bạn tìm thấy chỉ số của một phần tử trong một mảng 2D?Gọi Numpy.trong đó (điều kiện) với điều kiện là phần tử mảng = mảng = phần tử để trả về chỉ mục của phần tử trong một mảng.Đối với một mảng 2D, gán cho mỗi chỉ mục kết quả cho một biến duy nhất.assign each resulting index to a unique variable.
Làm thế nào để bạn tìm thấy chỉ số của một mảng trong Python?Nhận chỉ số của các phần tử trong vòng lặp Python tạo ra một mảng numpy và lặp qua mảng để so sánh phần tử trong mảng với mảng đã cho.Nếu phần tử khớp với in chỉ mục.Create a NumPy array and iterate over the array to compare the element in the array with the given array. If the element matches print the index. |