Lặp qua mảng của mảng Python

Khi làm việc với thư viện NumPy, bạn sẽ gặp các tình huống cần lặp qua mảng 1D, 2D và thậm chí cả mảng 3D. Bài viết này sẽ hướng dẫn bạn cách thực hiện nhiệm vụ này


💬 câu hỏi. Làm cách nào chúng ta viết mã để lặp qua mảng NumPy 1D, 2D hoặc 3D?

Chúng ta có thể hoàn thành nhiệm vụ này bằng một trong các tùy chọn sau

  • Phương pháp 1. Sử dụng vòng lặp Fornp.array()
  • Phương pháp 2. Sử dụng vòng lặp ______66_______
    atomic_els = np.array(np.arange(1,6))
    
    for el in atomic_els:
        print(el, end=' ')
    1
  • Phương pháp 3. Sử dụng vòng lặp ______66_______
    atomic_els = np.array(np.arange(1,6))
    
    for el in atomic_els:
        print(el, end=' ')
    3
  • Phương pháp 4. Sử dụng vòng lặp
    atomic_els = np.array(np.arange(1,6))
    
    for el in atomic_els:
        print(el, end=' ')
    4 và
    atomic_els = np.array(np.arange(1,6))
    
    for el in atomic_els:
        print(el, end=' ')
    5
  • Phương pháp 5. Sử dụng vòng lặp ______66_______
    atomic_els = np.array(np.arange(1,6))
    
    for el in atomic_els:
        print(el, end=' ')
    7
  • Phương pháp 6. Sử dụng một ______66_______ Vòng lặp và
    atomic_els = np.array(np.arange(1,6))
    
    for el in atomic_els:
        print(el, end=' ')
    9
  • Thưởng. CSV sang np.array()

Sự chuẩn bị

Trước khi tiếp tục, vui lòng đảm bảo thư viện NumPy đã được cài đặt. Bấm vào đây nếu bạn cần hướng dẫn

Sau đó, thêm đoạn mã sau vào đầu mỗi tập lệnh. Đoạn mã này sẽ cho phép mã trong bài viết này chạy không có lỗi

import numpy as np 

Sau khi nhập thư viện NumPy, thư viện này được tham chiếu bằng cách gọi mã ngắn (

atomic_data = np.array([np.arange(1,6), [0, 2, 4, 5, 6]])

for dim in atomic_data:
    for d in dim:
        print(d, end=' ')
1)


Phương pháp 1. Sử dụng Vòng lặp For và np. mảng()

Phương pháp này sử dụng vòng lặp For kết hợp với np.array() để lặp qua mảng NumPy 1D. Năm (5) Số nguyên tử đầu tiên từ Bảng tuần hoàn được tạo và hiển thị cho ví dụ này

atomic_els = np.array(np.arange(1,6))

for el in atomic_els:
    print(el, end=' ')

Ở trên, gọi hàm np.array() và truyền nó vào hàm

atomic_data = np.array([np.arange(1,6), [0, 2, 4, 5, 6]])

for dim in atomic_data:
    for d in dim:
        print(d, end=' ')
5 với hai (2) đối số. vị trí bắt đầu là một (1) và vị trí dừng là năm (5) hoặc (dừng-1). Kết quả là một mảng các số nguyên và lưu vào
atomic_data = np.array([np.arange(1,6), [0, 2, 4, 5, 6]])

for dim in atomic_data:
    for d in dim:
        print(d, end=' ')
6

atomic_data = np.array([np.arange(1,6), [0, 2, 4, 5, 6]])

for dim in atomic_data:
    for d in dim:
        print(d, end=' ')
7

Tiếp theo, một vòng lặp For được khởi tạo và lặp qua từng phần tử của mảng 1D NumPy ________7_______6

Đầu ra được gửi đến thiết bị đầu cuối trên một (1) dòng dưới dạng đối số bổ sung được chuyển đến câu lệnh in (

import itertools 
  
atomic_num = np.arange(1,4)
atomic_phase = ['gas', 'gas', 'solid']
atomic_group = [1, 18, 1]
  
for (a, b, c) in itertools.zip_longest(atomic_num, atomic_phase, atomic_group, fillvalue=0):
    print (a, b, c)
0). Đối số này thay thế ký tự dòng mới mặc định bằng một khoảng trống

import itertools 
  
atomic_num = np.arange(1,4)
atomic_phase = ['gas', 'gas', 'solid']
atomic_group = [1, 18, 1]
  
for (a, b, c) in itertools.zip_longest(atomic_num, atomic_phase, atomic_group, fillvalue=0):
    print (a, b, c)
1

Hướng dẫn NumPy - Mọi thứ bạn cần biết để bắt đầu

Lặp qua mảng của mảng Python

Xem video này trên YouTube


Phương pháp 2. Sử dụng Vòng lặp For và nditer()

Phương pháp này sử dụng vòng lặp

import itertools 
  
atomic_num = np.arange(1,4)
atomic_phase = ['gas', 'gas', 'solid']
atomic_group = [1, 18, 1]
  
for (a, b, c) in itertools.zip_longest(atomic_num, atomic_phase, atomic_group, fillvalue=0):
    print (a, b, c)
2 kết hợp với ________0_______1 để lặp qua một mảng NumPy. Dữ liệu năm (5) Số nguyên tử và Số neutron đầu tiên từ màn hình Bảng tuần hoàn cho ví dụ này

atomic_data = np.array([np.arange(1,6), [0, 2, 4, 5, 6]])

for dim in atomic_data:
    for d in dim:
        print(d, end=' ')

Ở trên, gọi hàm np.array() và chuyển ________7_______5 làm đối số đầu tiên và một mảng các giá trị Số nơtron được liên kết làm đối số thứ hai

Tiếp theo, một vòng lặp

import itertools 
  
atomic_num = np.arange(1,4)
atomic_phase = ['gas', 'gas', 'solid']
atomic_group = [1, 18, 1]
  
for (a, b, c) in itertools.zip_longest(atomic_num, atomic_phase, atomic_group, fillvalue=0):
    print (a, b, c)
6 bên ngoài được khởi tạo. Điều này lặp lại qua từng kích thước mảng

Bên trong vòng lặp này, một vòng lặp

import itertools 
  
atomic_num = np.arange(1,4)
atomic_phase = ['gas', 'gas', 'solid']
atomic_group = [1, 18, 1]
  
for (a, b, c) in itertools.zip_longest(atomic_num, atomic_phase, atomic_group, fillvalue=0):
    print (a, b, c)
6 khác được khởi tạo. Vòng lặp bên trong lặp qua từng phần tử của các kích thước trên

Đầu ra được gửi đến thiết bị đầu cuối trên một (1) dòng dưới dạng đối số bổ sung được chuyển đến câu lệnh in (

import itertools 
  
atomic_num = np.arange(1,4)
atomic_phase = ['gas', 'gas', 'solid']
atomic_group = [1, 18, 1]
  
for (a, b, c) in itertools.zip_longest(atomic_num, atomic_phase, atomic_group, fillvalue=0):
    print (a, b, c)
0). Đối số này thay thế ký tự dòng mới mặc định bằng một khoảng trống

import itertools 
  
atomic_num = np.arange(1,4)
atomic_phase = ['gas', 'gas', 'solid']
atomic_group = [1, 18, 1]
  
for (a, b, c) in itertools.zip_longest(atomic_num, atomic_phase, atomic_group, fillvalue=0):
    print (a, b, c)
9

💡Lưu ý. Thứ nguyên đầu tiên được đánh dấu để dễ dàng phân biệt các thứ nguyên

Phạm vi Python() Hàm. Hướng dẫn minh họa hữu ích

Lặp qua mảng của mảng Python

Xem video này trên YouTube


Phương pháp 3. Sử dụng Vòng lặp For và itertools

Phương pháp này sử dụng vòng lặp

import itertools 
  
atomic_num = np.arange(1,4)
atomic_phase = ['gas', 'gas', 'solid']
atomic_group = [1, 18, 1]
  
for (a, b, c) in itertools.zip_longest(atomic_num, atomic_phase, atomic_group, fillvalue=0):
    print (a, b, c)
2 và thư viện
atomic_els = np.array(np.arange(1,6))

for el in atomic_els:
    print(el, end=' ')
3 tích hợp sẵn của Python để lặp qua một mảng NumPy. Dữ liệu ba (3) Số nguyên tử, Pha và Nhóm đầu tiên từ màn hình Bảng tuần hoàn cho ví dụ này

import itertools 
  
atomic_num = np.arange(1,4)
atomic_phase = ['gas', 'gas', 'solid']
atomic_group = [1, 18, 1]
  
for (a, b, c) in itertools.zip_longest(atomic_num, atomic_phase, atomic_group, fillvalue=0):
    print (a, b, c)

Ở trên, nhập thư viện

atomic_els = np.array(np.arange(1,6))

for el in atomic_els:
    print(el, end=' ')
3 để sử dụng hàm
atomic_names = np.array(['Hydrogen', 'Helium', 'Lithium', 'Beryllium', 'Boron'])
el_count = 0

while el_count < atomic_names.size:
    print(atomic_names[el_count], end=' ')
    el_count += 1
3

Sau đó, ba (3) mảng được khai báo chứa dữ liệu liên quan của ba (3) phần tử đầu tiên trong Bảng tuần hoàn. Họ lưu lần lượt vào

atomic_names = np.array(['Hydrogen', 'Helium', 'Lithium', 'Beryllium', 'Boron'])
el_count = 0

while el_count < atomic_names.size:
    print(atomic_names[el_count], end=' ')
    el_count += 1
4,
atomic_names = np.array(['Hydrogen', 'Helium', 'Lithium', 'Beryllium', 'Boron'])
el_count = 0

while el_count < atomic_names.size:
    print(atomic_names[el_count], end=' ')
    el_count += 1
5 và
atomic_names = np.array(['Hydrogen', 'Helium', 'Lithium', 'Beryllium', 'Boron'])
el_count = 0

while el_count < atomic_names.size:
    print(atomic_names[el_count], end=' ')
    el_count += 1
6

Tiếp theo, vòng lặp

import itertools 
  
atomic_num = np.arange(1,4)
atomic_phase = ['gas', 'gas', 'solid']
atomic_group = [1, 18, 1]
  
for (a, b, c) in itertools.zip_longest(atomic_num, atomic_phase, atomic_group, fillvalue=0):
    print (a, b, c)
2 được khởi tạo và truyền ba (3) đối số bên trong dấu ngoặc _______27_______8 tham chiếu đến các đối số bên trong hàm
atomic_names = np.array(['Hydrogen', 'Helium', 'Lithium', 'Beryllium', 'Boron'])
el_count = 0

while el_count < atomic_names.size:
    print(atomic_names[el_count], end=' ')
    el_count += 1
9

Một đối số bổ sung (

atomic_names = np.array(['Hydrogen', 'Helium', 'Lithium', 'Beryllium', 'Boron'])

for idx, x in np.ndenumerate(atomic_names):
    print(idx, x)
0) cũng được thông qua. Điều này điền vào bất kỳ giá trị còn thiếu nào cho danh sách có độ dài không bằng nhau với giá trị đã nêu

Vòng lặp lặp lại cho đến khi đạt đến cuối mảng, xuất ra thiết bị đầu cuối cho mỗi lần lặp

atomic_names = np.array(['Hydrogen', 'Helium', 'Lithium', 'Beryllium', 'Boron'])

for idx, x in np.ndenumerate(atomic_names):
    print(idx, x)
1

Iterators, Iterables và Itertools

Lặp qua mảng của mảng Python

Xem video này trên YouTube


Phương pháp 4. Sử dụng Vòng lặp While và Kích thước

Phương pháp này sử dụng vòng lặp

atomic_names = np.array(['Hydrogen', 'Helium', 'Lithium', 'Beryllium', 'Boron'])

for idx, x in np.ndenumerate(atomic_names):
    print(idx, x)
2 kết hợp với ________0_______5 để lặp qua một mảng NumPy. Dữ liệu năm (5) Số nguyên tử, Số neutron và Pha đầu tiên từ màn hình Bảng tuần hoàn cho ví dụ này

atomic_names = np.array(['Hydrogen', 'Helium', 'Lithium', 'Beryllium', 'Boron'])
el_count = 0

while el_count < atomic_names.size:
    print(atomic_names[el_count], end=' ')
    el_count += 1

Ở trên, gọi hàm np.array() và chuyển một danh sách chứa năm (5) tên phần tử đầu tiên của Bảng tuần hoàn. Những kết quả này lưu vào

atomic_names = np.array(['Hydrogen', 'Helium', 'Lithium', 'Beryllium', 'Boron'])

for idx, x in np.ndenumerate(atomic_names):
    print(idx, x)
5

Sau đó, một biến,

atomic_names = np.array(['Hydrogen', 'Helium', 'Lithium', 'Beryllium', 'Boron'])

for idx, x in np.ndenumerate(atomic_names):
    print(idx, x)
6, được khai báo với giá trị bắt đầu bằng 0 (
atomic_names = np.array(['Hydrogen', 'Helium', 'Lithium', 'Beryllium', 'Boron'])

for idx, x in np.ndenumerate(atomic_names):
    print(idx, x)
7). Đây sẽ là một biến đếm và cho phép vòng lặp
atomic_els = np.array(np.arange(1,6))

for el in atomic_els:
    print(el, end=' ')
4 biết khi nào nên dừng lặp lại

Tiếp theo, một vòng lặp

atomic_names = np.array(['Hydrogen', 'Helium', 'Lithium', 'Beryllium', 'Boron'])

for idx, x in np.ndenumerate(atomic_names):
    print(idx, x)
2 được khởi tạo và lặp qua các phần tử của
atomic_names = np.array(['Hydrogen', 'Helium', 'Lithium', 'Beryllium', 'Boron'])

for idx, x in np.ndenumerate(atomic_names):
    print(idx, x)
5. Điều này sẽ tiếp tục trong khi giá trị của
atomic_names = np.array(['Hydrogen', 'Helium', 'Lithium', 'Beryllium', 'Boron'])

for idx, x in np.ndenumerate(atomic_names):
    print(idx, x)
6 vẫn nhỏ hơn giá trị của
nums = np.array([[[1, 2],   [3, 4],   [5, 6]],
                  [[7, 8],   [9, 10],  [11, 12]],
                  [[13, 14], [15, 16], [17, 18]],
                  [[19, 20], [21, 22], [23, 23]],
                  [[24, 25], [26, 27], [28, 29]]])

for x in range(0, 5):
    for y in range(0, 3):
        for z in range(0, 2):
            print(nums[x][y][z])
2

Đầu ra được gửi đến thiết bị đầu cuối trên một (1) dòng dưới dạng đối số bổ sung được chuyển đến câu lệnh in (

import itertools 
  
atomic_num = np.arange(1,4)
atomic_phase = ['gas', 'gas', 'solid']
atomic_group = [1, 18, 1]
  
for (a, b, c) in itertools.zip_longest(atomic_num, atomic_phase, atomic_group, fillvalue=0):
    print (a, b, c)
0). Đối số này thay thế ký tự dòng mới mặc định bằng một khoảng trống

nums = np.array([[[1, 2],   [3, 4],   [5, 6]],
                  [[7, 8],   [9, 10],  [11, 12]],
                  [[13, 14], [15, 16], [17, 18]],
                  [[19, 20], [21, 22], [23, 23]],
                  [[24, 25], [26, 27], [28, 29]]])

for x in range(0, 5):
    for y in range(0, 3):
        for z in range(0, 2):
            print(nums[x][y][z])
4

Phương pháp 5. Sử dụng Vòng lặp For và np. ndenumerate()

Phương pháp này sử dụng vòng lặp For

atomic_els = np.array(np.arange(1,6))

for el in atomic_els:
    print(el, end=' ')
7 để lặp qua một mảng NumPy. Năm (5) tên nguyên tố đầu tiên từ bảng tuần hoàn hiển thị cho ví dụ này.

atomic_names = np.array(['Hydrogen', 'Helium', 'Lithium', 'Beryllium', 'Boron'])

for idx, x in np.ndenumerate(atomic_names):
    print(idx, x)

Ở trên, gọi hàm np.array() và truyền cho nó một mảng chứa năm (5) tên phần tử đầu tiên từ Bảng tuần hoàn. Kết quả lưu vào

atomic_names = np.array(['Hydrogen', 'Helium', 'Lithium', 'Beryllium', 'Boron'])

for idx, x in np.ndenumerate(atomic_names):
    print(idx, x)
5

Tiếp theo, một vòng lặp

import itertools 
  
atomic_num = np.arange(1,4)
atomic_phase = ['gas', 'gas', 'solid']
atomic_group = [1, 18, 1]
  
for (a, b, c) in itertools.zip_longest(atomic_num, atomic_phase, atomic_group, fillvalue=0):
    print (a, b, c)
2 được khởi tạo tham chiếu đến
import pandas as pd
import csv

file_name = 'pt_sample.csv'
df_data = np.array(list(csv.reader(open(file_name, 'r'), delimiter=','))).astype("float")
print(df_data)
0 là chỉ số của mảng và
import pandas as pd
import csv

file_name = 'pt_sample.csv'
df_data = np.array(list(csv.reader(open(file_name, 'r'), delimiter=','))).astype("float")
print(df_data)
1, là giá trị của phần tử mảng

Đầu ra được gửi đến thiết bị đầu cuối. Sau đó,

import pandas as pd
import csv

file_name = 'pt_sample.csv'
df_data = np.array(list(csv.reader(open(file_name, 'r'), delimiter=','))).astype("float")
print(df_data)
0 hiển thị một
import pandas as pd
import csv

file_name = 'pt_sample.csv'
df_data = np.array(list(csv.reader(open(file_name, 'r'), delimiter=','))).astype("float")
print(df_data)
3 chứa giá trị chỉ mục của mảng và sau đó là giá trị của
import pandas as pd
import csv

file_name = 'pt_sample.csv'
df_data = np.array(list(csv.reader(open(file_name, 'r'), delimiter=','))).astype("float")
print(df_data)
1 cho mỗi lần lặp lại

import pandas as pd
import csv

file_name = 'pt_sample.csv'
df_data = np.array(list(csv.reader(open(file_name, 'r'), delimiter=','))).astype("float")
print(df_data)
5

Phương pháp 6. Sử dụng Vòng lặp For và phạm vi ()

Phương pháp này sử dụng vòng lặp ________13_______6

atomic_els = np.array(np.arange(1,6))

for el in atomic_els:
    print(el, end=' ')
9) để lặp qua mảng 3D NumPy

nums = np.array([[[1, 2],   [3, 4],   [5, 6]],
                  [[7, 8],   [9, 10],  [11, 12]],
                  [[13, 14], [15, 16], [17, 18]],
                  [[19, 20], [21, 22], [23, 23]],
                  [[24, 25], [26, 27], [28, 29]]])

for x in range(0, 5):
    for y in range(0, 3):
        for z in range(0, 2):
            print(nums[x][y][z])

Ở trên khai báo một mảng 3D NumPy chứa các số liên tiếp từ 1-29. Những thứ này lưu vào

import pandas as pd
import csv

file_name = 'pt_sample.csv'
df_data = np.array(list(csv.reader(open(file_name, 'r'), delimiter=','))).astype("float")
print(df_data)
8

Tiếp theo, ba (3) vòng lặp ________13_______6 được khởi tạo để lặp qua và xuất nội dung của

import pandas as pd
import csv

file_name = 'pt_sample.csv'
df_data = np.array(list(csv.reader(open(file_name, 'r'), delimiter=','))).astype("float")
print(df_data)
8 đến thiết bị đầu cuối một (1) số trên mỗi dòng

Ví dụ, hàm range() cho mỗi vòng lặp dựa trên kích thước của mảng 3D Numpy

  • Vòng lặp đầu tiên (_______66_______1) xác định tổng số tow trong mảng

Lặp qua mảng của mảng Python

  • Vòng lặp tiếp theo (For2) xác định số lượng cột trong mảng

Lặp qua mảng của mảng Python

  • Vòng lặp cuối cùng (For3) xác định các phần tử trong mỗi cột của mảng

Lặp qua mảng của mảng Python

Cuối cùng, đầu ra được gửi đến thiết bị đầu cuối (chỉ đoạn mã)

For4

Thưởng. Chuyển đổi CSV sang np. mảng()

Ví dụ này đọc trong một đoạn của Bảng tuần hoàn dưới dạng tệp CSV. Dữ liệu này được chuyển đổi thành một mảng NumPy và được xuất ra thiết bị đầu cuối

Tệp CSV bên dưới chứa các giá trị của Số nguyên tử, Khối lượng nguyên tử, Số neutron và Số electron cho bảy (7) nguyên tố đầu tiên trong Bảng tuần hoàn

Nội dung của For5

For6

Để làm theo, hãy lưu tệp này với tên For5 và di chuyển tệp vào thư mục làm việc hiện tại

Trước khi tiếp tục, vui lòng đảm bảo thư viện Pandas đã được cài đặt. Bấm vào đây nếu bạn cần hướng dẫn

import pandas as pd
import csv

file_name = 'pt_sample.csv'
df_data = np.array(list(csv.reader(open(file_name, 'r'), delimiter=','))).astype("float")
print(df_data)

Ở trên, nhập thư viện Pandas và thư viện CSV. Điều này là cần thiết để làm việc với DataFrames và đọc trong tệp CSV

Sau đó, tên tệp được khai báo và lưu vào For8

Trên dòng được đánh dấu, hàm np.array() được gọi và truyền các đối số sau

  • Hàm np.array()0 được truyền dưới dạng đối số và đối số này truyền phương thức np.array()1 để mở tệp CSV được chỉ định ở chế độ đọc (np.array()2), bao gồm dấu phân cách np.array()3 (np.array()4)
  • Nội dung của tệp CSV chuyển đổi thành danh sách
  • Danh sách này chuyển đổi thành một np.array()

Kết quả lưu vào np.array()6 và xuất ra terminal

np.array()7

10 phút để gấu trúc trong 5 phút (Được rồi 8)

Lặp qua mảng của mảng Python

Xem video này trên YouTube


Tóm lược

Bảy (7) phương pháp lặp mảng NumPy này sẽ cung cấp cho bạn đủ thông tin để chọn phương pháp tốt nhất cho các yêu cầu viết mã của bạn

Bạn có thể lặp qua một mảng Python không?

Mảng lặp . Khi chúng ta xử lý các mảng nhiều chiều ở dạng numpy, chúng ta có thể thực hiện việc này bằng cách sử dụng vòng lặp for cơ bản của python . Nếu chúng ta lặp trên mảng 1-D, nó sẽ đi qua từng phần tử một.

Cái gì được sử dụng để lặp qua một mảng trong Python?

Bạn có thể sử dụng vòng lặp for in để lặp qua tất cả các phần tử của một mảng.

Làm cách nào để so sánh hai mảng trong Python?

Phương pháp 1. Chúng tôi thường sử dụng toán tử == để so sánh hai mảng NumPy nhằm tạo đối tượng mảng mới . Gọi ndarray. all() với đối tượng mảng mới là ndarray để trả về True nếu hai mảng NumPy tương đương.