Viết mảng 2D vào tệp văn bản python

Tôi muốn đọc mảng 2D từ tệp văn bản và muốn lưu trữ nội dung của mảng trong TTree

Tôi đang đính kèm tệp văn bản, trong đó tôi có khối lượng và TKE của các hạt được lưu trữ trong mảng 2D. Tôi muốn đọc nội dung của mảng và muốn lưu trữ khối lượng tương quan và TKE trong hai nhánh riêng biệt của TTree

NumPy là dạng viết tắt của Numerical Python. Nó được sử dụng cho các loại hoạt động khoa học khác nhau trong python. Numpy là một thư viện rộng lớn trong python được sử dụng cho hầu hết mọi loại hoạt động khoa học hoặc toán học. Bản thân nó là một mảng là tập hợp các phương thức và hàm khác nhau để xử lý các mảng

Viết một mảng nhiều chiều vào một tệp văn bản

Có thể coi mảng nhiều chiều là một mảng chứa nhiều hàng và nhiều cột

Giả sử chúng ta được cung cấp một mảng nhiều chiều và chúng ta cần tìm một cách hiệu quả để ghi mảng này vào một tệp văn bản

Nếu chúng ta muốn ghi dữ liệu vào đĩa để việc truy xuất dữ liệu dễ dàng dưới dạng mảng NumPy, chúng ta có thể sử dụng numpy. phương thức lưu (). Nếu chúng tôi muốn lưu nó thành định dạng mà con người có thể đọc được, chúng tôi cần sử dụng numpy. savetxt()

các numpy. savetxt() cuộn cảm trên ndarrays với hơn 2 chiều. Đây có thể là do thiết kế, vì vốn dĩ không có cách nào được xác định để biểu thị các kích thước bổ sung trong tệp văn bản

Bart, Quản lý tại ShopSmart (và lập trình viên Python bán thời gian), chịu trách nhiệm mua Số Xổ số cho nhóm của họ. Bart cần trợ giúp viết tập lệnh tạo số ngẫu nhiên và ghi chúng vào tệp văn bản phẳng bằng các hàm từ thư viện NumPy

💬 câu hỏi. Chúng ta sẽ viết mã để ghi dữ liệu này vào một tệp văn bản phẳng như thế nào?

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
    import random
    
    lotto_649 = np.array(np.random.randint(1, 100, 7))
    np.savetxt('lotto_649.txt', lotto_649, newline=' ', fmt="%d")
    4 để viết Mảng NumPy 1D
  • Phương pháp 2. Sử dụng
    import random
    
    lotto_649 = np.array(np.random.randint(1, 100, 7))
    np.savetxt('lotto_649.txt', lotto_649, newline=' ', fmt="%d")
    5,
    import random
    
    lotto_649 = np.array(np.random.randint(1, 100, 7))
    np.savetxt('lotto_649.txt', lotto_649, newline=' ', fmt="%d")
    6 và
    import random
    
    lotto_649 = np.array(np.random.randint(1, 100, 7))
    np.savetxt('lotto_649.txt', lotto_649, newline=' ', fmt="%d")
    0 để viết Mảng NumPy 1D
  • Phương pháp 3. Sử dụng
    import random
    
    lotto_649 = np.array(np.random.randint(1, 100, 7))
    np.savetxt('lotto_649.txt', lotto_649, newline=' ', fmt="%d")
    4 và
    import random
    
    lotto_649 = np.array(np.random.randint(1, 100, 7))
    np.savetxt('lotto_649.txt', lotto_649, newline=' ', fmt="%d")
    2 để viết một mảng 1D NumPy
  • Phương pháp 4. Sử dụng
    import random
    
    lotto_649 = np.array(np.random.randint(1, 100, 7))
    np.savetxt('lotto_649.txt', lotto_649, newline=' ', fmt="%d")
    4 để viết Mảng NumPy 2D
  • Phương pháp 5. Sử dụng
    import random
    
    lotto_649 = np.array(np.random.randint(1, 100, 7))
    np.savetxt('lotto_649.txt', lotto_649, newline=' ', fmt="%d")
    4 để viết Mảng 3D NumPy

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 trên máy tính. Bấm vào đây nếu bạn cần hướng dẫn

Thêm 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 
import random

Trong bài viết này nhập thư viện ngẫu nhiên để tạo số nguyên tùy ý cho số Xổ Số


Phương pháp 1. Sử dụng savetxt() để viết Mảng 1D NumPy

Một cách đơn giản để ghi mảng NumPy 1D vào tệp văn bản phẳng là sử dụng hàm

import random

lotto_649 = np.array(np.random.randint(1, 100, 7))
np.savetxt('lotto_649.txt', lotto_649, newline=' ', fmt="%d")
4 và chuyển các đối số thích hợp

import random

lotto_649 = np.array(np.random.randint(1, 100, 7))
np.savetxt('lotto_649.txt', lotto_649, newline=' ', fmt="%d")

Ở trên, một mảng NumPy (

import random

lotto_649 = np.array(np.random.randint(1, 100, 7))
np.savetxt('lotto_649.txt', lotto_649, newline=' ', fmt="%d")
6) được gọi và chuyển qua trình tạo số nguyên ngẫu nhiên (
import random

lotto_649 = np.array(np.random.randint(1, 100, 7))
np.savetxt('lotto_649.txt', lotto_649, newline=' ', fmt="%d")
7). Hàm này sau đó được truyền ba (3) đối số. (bắt đầu, dừng, độ dài). Sau đó, bảy (7) số Xổ số ngẫu nhiên lưu vào
import random

lotto_649 = np.array(np.random.randint(1, 100, 7))
np.savetxt('lotto_649.txt', lotto_649, newline=' ', fmt="%d")
8

Tiếp theo,

import random

lotto_649 = np.array(np.random.randint(1, 100, 7))
np.savetxt('lotto_649.txt', lotto_649, newline=' ', fmt="%d")
9 được gọi và truyền bốn (4) đối số sau

  1. Tên tệp,
    lotto_max = np.array(np.random.randint(1, 100, 8))
    
    with open('lotto_max.txt', 'w') as fp:
        fp.write(','.join(map(str, lotto_max)))
    0
  2. Mảng NumPy,
    import random
    
    lotto_649 = np.array(np.random.randint(1, 100, 7))
    np.savetxt('lotto_649.txt', lotto_649, newline=' ', fmt="%d")
    8
  3. Ký tự
    lotto_max = np.array(np.random.randint(1, 100, 8))
    
    with open('lotto_max.txt', 'w') as fp:
        fp.write(','.join(map(str, lotto_max)))
    2 tùy chọn. Theo mặc định, một
    lotto_max = np.array(np.random.randint(1, 100, 8))
    
    with open('lotto_max.txt', 'w') as fp:
        fp.write(','.join(map(str, lotto_max)))
    2 (
    lotto_max = np.array(np.random.randint(1, 100, 8))
    
    with open('lotto_max.txt', 'w') as fp:
        fp.write(','.join(map(str, lotto_max)))
    4) được thêm vào cuối mỗi phần tử. Điều này thay đổi để viết từng phần tử trên một dòng, cách nhau bằng dấu cách (
    lotto_max = np.array(np.random.randint(1, 100, 8))
    
    with open('lotto_max.txt', 'w') as fp:
        fp.write(','.join(map(str, lotto_max)))
    5)
  4. Định dạng số nguyên. Theo mặc định, số float được hiển thị. Sửa đổi tùy chọn định dạng thành
    lotto_max = np.array(np.random.randint(1, 100, 8))
    
    with open('lotto_max.txt', 'w') as fp:
        fp.write(','.join(map(str, lotto_max)))
    6 sẽ thay đổi hiển thị thành số nguyên

Nếu thành công, tệp nói trên nằm trong thư mục làm việc hiện tại chứa bảy (7) số nguyên ngẫu nhiên trên một dòng

Nội dung tệp

lotto_max = np.array(np.random.randint(1, 100, 8))

with open('lotto_max.txt', 'w') as fp:
    fp.write(','.join(map(str, lotto_max)))
7

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

Viết mảng 2D vào tệp văn bản python

Xem video này trên YouTube


Phương pháp 2. Sử dụng open(), map() và join() để viết Mảng NumPy 1D

Một cách khác để ghi mảng NumPy 1D vào tệp văn bản phẳng là sử dụng

import random

lotto_649 = np.array(np.random.randint(1, 100, 7))
np.savetxt('lotto_649.txt', lotto_649, newline=' ', fmt="%d")
5 và viết nội dung bằng cách sử dụng
import random

lotto_649 = np.array(np.random.randint(1, 100, 7))
np.savetxt('lotto_649.txt', lotto_649, newline=' ', fmt="%d")
6 và
import random

lotto_649 = np.array(np.random.randint(1, 100, 7))
np.savetxt('lotto_649.txt', lotto_649, newline=' ', fmt="%d")
0

lotto_max = np.array(np.random.randint(1, 100, 8))

with open('lotto_max.txt', 'w') as fp:
    fp.write(','.join(map(str, lotto_max)))

Ở trên, một mảng NumPy (

import random

lotto_649 = np.array(np.random.randint(1, 100, 7))
np.savetxt('lotto_649.txt', lotto_649, newline=' ', fmt="%d")
6) được gọi và chuyển qua trình tạo số nguyên ngẫu nhiên (
import random

lotto_649 = np.array(np.random.randint(1, 100, 7))
np.savetxt('lotto_649.txt', lotto_649, newline=' ', fmt="%d")
7). Hàm này sau đó được truyền ba (3) đối số. (bắt đầu, dừng, độ dài). Sau đó, tám (8) số Xổ số ngẫu nhiên lưu vào
import random

lotto_649 = np.array(np.random.randint(1, 100, 7))
np.savetxt('lotto_649.txt', lotto_649, newline=' ', fmt="%d")
13

Tiếp theo,

import random

lotto_649 = np.array(np.random.randint(1, 100, 7))
np.savetxt('lotto_649.txt', lotto_649, newline=' ', fmt="%d")
5 được gọi để mở tệp đã chỉ định (
import random

lotto_649 = np.array(np.random.randint(1, 100, 7))
np.savetxt('lotto_649.txt', lotto_649, newline=' ', fmt="%d")
15) ở chế độ ghi (
import random

lotto_649 = np.array(np.random.randint(1, 100, 7))
np.savetxt('lotto_649.txt', lotto_649, newline=' ', fmt="%d")
16) và tạo Đối tượng tệp (
import random

lotto_649 = np.array(np.random.randint(1, 100, 7))
np.savetxt('lotto_649.txt', lotto_649, newline=' ', fmt="%d")
17)

💡Lưu ý. Đối tượng tệp cho phép truy cập và thao tác với tệp

Sau khi mở, điều sau đây xảy ra

  • Hàm
    import random
    
    lotto_649 = np.array(np.random.randint(1, 100, 7))
    np.savetxt('lotto_649.txt', lotto_649, newline=' ', fmt="%d")
    6 được gọi. Hàm này nhận hai (2) đối số. một chức năng (
    import random
    
    lotto_649 = np.array(np.random.randint(1, 100, 7))
    np.savetxt('lotto_649.txt', lotto_649, newline=' ', fmt="%d")
    19) và một lần lặp (
    import random
    
    lotto_649 = np.array(np.random.randint(1, 100, 7))
    np.savetxt('lotto_649.txt', lotto_649, newline=' ', fmt="%d")
    13). Điều này trả về một đối tượng
    import random
    
    lotto_649 = np.array(np.random.randint(1, 100, 7))
    np.savetxt('lotto_649.txt', lotto_649, newline=' ', fmt="%d")
    6 có thể lặp lại, tương tự như bên dưới.
  • Sau đó, hàm
    import random
    
    lotto_649 = np.array(np.random.randint(1, 100, 7))
    np.savetxt('lotto_649.txt', lotto_649, newline=' ', fmt="%d")
    0 được gọi. Hàm này lặp qua đối tượng
    import random
    
    lotto_649 = np.array(np.random.randint(1, 100, 7))
    np.savetxt('lotto_649.txt', lotto_649, newline=' ', fmt="%d")
    6 được trả về, nối từng phần tử bằng dấu phẩy (‘,’) và ghi vào tệp

Nếu thành công, tệp nói trên nằm trong thư mục làm việc hiện tại chứa tám (8) số nguyên ngẫu nhiên trên một dòng

Nội dung tệp

import random

lotto_649 = np.array(np.random.randint(1, 100, 7))
np.savetxt('lotto_649.txt', lotto_649, newline=' ', fmt="%d")
84

Hàm open() trong Python – Hướng dẫn 80/20 bằng ví dụ

Viết mảng 2D vào tệp văn bản python

Xem video này trên YouTube


Phương pháp 3. Sử dụng savetxt() và reshape() để viết một mảng 1D NumPy

Để ghi mảng NumPy 1D vào tệp văn bản phẳng với cách hiển thị khác, hãy sử dụng

import random

lotto_649 = np.array(np.random.randint(1, 100, 7))
np.savetxt('lotto_649.txt', lotto_649, newline=' ', fmt="%d")
4 và
import random

lotto_649 = np.array(np.random.randint(1, 100, 7))
np.savetxt('lotto_649.txt', lotto_649, newline=' ', fmt="%d")
2

Đối với ví dụ này, Bart đã tạo hai (2) vé xổ số Pick5, được lưu vào mảng NumPy 1D. Hãy sử dụng

import random

lotto_649 = np.array(np.random.randint(1, 100, 7))
np.savetxt('lotto_649.txt', lotto_649, newline=' ', fmt="%d")
2 để giải quyết vấn đề

import random

lotto_649 = np.array(np.random.randint(1, 100, 7))
np.savetxt('lotto_649.txt', lotto_649, newline=' ', fmt="%d")
1

Ở trên, một mảng NumPy 1D được tạo với 10 số vé. Tuy nhiên, mỗi vé phải có năm (5) số. Hàm

import random

lotto_649 = np.array(np.random.randint(1, 100, 7))
np.savetxt('lotto_649.txt', lotto_649, newline=' ', fmt="%d")
2 sửa mảng ban đầu thành hai (2) hàng, mỗi hàng năm (5) phần tử. Kết quả lưu vào
import random

lotto_649 = np.array(np.random.randint(1, 100, 7))
np.savetxt('lotto_649.txt', lotto_649, newline=' ', fmt="%d")
89

Tiếp theo,

import random

lotto_649 = np.array(np.random.randint(1, 100, 7))
np.savetxt('lotto_649.txt', lotto_649, newline=' ', fmt="%d")
4 được gọi và ba (3) đối số sau được truyền

  1. Tên tệp,
    import numpy as np 
    import random
    41
  2. Mảng NumPy,
    import numpy as np 
    import random
    42
  3. Định dạng số nguyên. Theo mặc định, số float được hiển thị. Sửa đổi tùy chọn định dạng thành
    lotto_max = np.array(np.random.randint(1, 100, 8))
    
    with open('lotto_max.txt', 'w') as fp:
        fp.write(','.join(map(str, lotto_max)))
    6 sẽ thay đổi hiển thị thành số nguyên

Nếu thành công, tệp nêu trên nằm trong thư mục làm việc hiện tại

Nội dung tệp

import numpy as np 
import random
44

Phương pháp 4. Sử dụng savetxt() để viết Mảng NumPy 2D

Để ghi một mảng NumPy 2D vào một tệp văn bản phẳng với màn hình hiển thị theo hàng, hãy sử dụng

import random

lotto_649 = np.array(np.random.randint(1, 100, 7))
np.savetxt('lotto_649.txt', lotto_649, newline=' ', fmt="%d")
4

import random

lotto_649 = np.array(np.random.randint(1, 100, 7))
np.savetxt('lotto_649.txt', lotto_649, newline=' ', fmt="%d")
8

Ở trên tạo ra một mảng 2D NumPy; . Kết quả lưu vào

import numpy as np 
import random
46

Tiếp theo,

import random

lotto_649 = np.array(np.random.randint(1, 100, 7))
np.savetxt('lotto_649.txt', lotto_649, newline=' ', fmt="%d")
4 được gọi và ba (3) đối số sau được truyền

  1. Tên tệp,
    import numpy as np 
    import random
    48
  2. Mảng NumPy,
    import random
    
    lotto_649 = np.array(np.random.randint(1, 100, 7))
    np.savetxt('lotto_649.txt', lotto_649, newline=' ', fmt="%d")
    0
  3. Định dạng số nguyên. Theo mặc định, số float được hiển thị. Sửa đổi tùy chọn định dạng thành
    lotto_max = np.array(np.random.randint(1, 100, 8))
    
    with open('lotto_max.txt', 'w') as fp:
        fp.write(','.join(map(str, lotto_max)))
    6 sẽ thay đổi hiển thị thành số nguyên

Nếu thành công, tệp nêu trên nằm trong thư mục làm việc hiện tại

Nội dung tệp

import random

lotto_649 = np.array(np.random.randint(1, 100, 7))
np.savetxt('lotto_649.txt', lotto_649, newline=' ', fmt="%d")
31

Phương pháp 5. Sử dụng save() để viết Mảng 3D NumPy

Thật không may, các tệp văn bản phẳng không thể xử lý các mảng 3D NumPy. Do đó,

import random

lotto_649 = np.array(np.random.randint(1, 100, 7))
np.savetxt('lotto_649.txt', lotto_649, newline=' ', fmt="%d")
4 được sử dụng trong các ví dụ trên sẽ không hoạt động ở đây và thực tế là tạo ra lỗi. Chức năng
import random

lotto_649 = np.array(np.random.randint(1, 100, 7))
np.savetxt('lotto_649.txt', lotto_649, newline=' ', fmt="%d")
4 sẽ cần được sử dụng

import numpy as np 
import random
4

Ở trên, tạo một mảng 3D NumPy. Kết quả lưu vào

import random

lotto_649 = np.array(np.random.randint(1, 100, 7))
np.savetxt('lotto_649.txt', lotto_649, newline=' ', fmt="%d")
34

Tiếp theo,

import random

lotto_649 = np.array(np.random.randint(1, 100, 7))
np.savetxt('lotto_649.txt', lotto_649, newline=' ', fmt="%d")
2 được gọi và hai (2) đối số sau được truyền

  1. Tên tệp,
    import random
    
    lotto_649 = np.array(np.random.randint(1, 100, 7))
    np.savetxt('lotto_649.txt', lotto_649, newline=' ', fmt="%d")
    34. Không thêm phần mở rộng ở đây dưới dạng tệp nhị phân có phần mở rộng là.
    import random
    
    lotto_649 = np.array(np.random.randint(1, 100, 7))
    np.savetxt('lotto_649.txt', lotto_649, newline=' ', fmt="%d")
    37 sẽ được tạo (
    import random
    
    lotto_649 = np.array(np.random.randint(1, 100, 7))
    np.savetxt('lotto_649.txt', lotto_649, newline=' ', fmt="%d")
    38)
  2. Mảng NumPy,
    import random
    
    lotto_649 = np.array(np.random.randint(1, 100, 7))
    np.savetxt('lotto_649.txt', lotto_649, newline=' ', fmt="%d")
    3

Nếu thành công, tệp nêu trên nằm trong thư mục làm việc hiện tại

Để xem nội dung tệp, hãy chạy đoạn mã sau

import random

lotto_649 = np.array(np.random.randint(1, 100, 7))
np.savetxt('lotto_649.txt', lotto_649, newline=' ', fmt="%d")
3

Để đọc trong tệp nhị phân,

import random

lotto_649 = np.array(np.random.randint(1, 100, 7))
np.savetxt('lotto_649.txt', lotto_649, newline=' ', fmt="%d")
40 được gọi và các đối số sau được truyền

  1. Tên tệp,
    import random
    
    lotto_649 = np.array(np.random.randint(1, 100, 7))
    np.savetxt('lotto_649.txt', lotto_649, newline=' ', fmt="%d")
    38
  2. Đối số
    import random
    
    lotto_649 = np.array(np.random.randint(1, 100, 7))
    np.savetxt('lotto_649.txt', lotto_649, newline=' ', fmt="%d")
    42 được đặt thành True

💡Lưu ý. Đối số,

import random

lotto_649 = np.array(np.random.randint(1, 100, 7))
np.savetxt('lotto_649.txt', lotto_649, newline=' ', fmt="%d")
43, cho phép tải mảng đối tượng đã chọn được lưu trữ trong tệp
import random

lotto_649 = np.array(np.random.randint(1, 100, 7))
np.savetxt('lotto_649.txt', lotto_649, newline=' ', fmt="%d")
44.  

Nội dung tệp

import random

lotto_649 = np.array(np.random.randint(1, 100, 7))
np.savetxt('lotto_649.txt', lotto_649, newline=' ', fmt="%d")
45

Tóm lược

Các phương pháp ghi mảng NumPy này vào tệp văn bản phẳng sẽ cung cấp cho bạn đủ thông tin để chọn phương pháp tốt nhất cho yêu cầu viết mã của bạn

Bạn có thể viết một mảng vào một tệp bằng Python không?

Bạn chỉ có thể viết nó ra một tập tin trực tiếp. trong đó l1 là danh sách bạn đưa ra

Làm cách nào để chuyển đổi mảng np thành chuỗi?

array_str() bằng Python. cục mịch. Hàm array_str() được sử dụng để biểu diễn dữ liệu của một mảng dưới dạng một chuỗi. Dữ liệu trong mảng được trả về dưới dạng một chuỗi.