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
- 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 - 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 - 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ộtlotto_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] - Đị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
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ượngimport 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ượngimport 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ụ
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
- Tên tệp,
import numpy as np import random
41 - Mảng NumPy,
import numpy as np import random
42 - Đị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 random44
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 random46
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
- Tên tệp,
import numpy as np import random
48 - 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 - Đị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 random4
Ở 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
- 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] - 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
- 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 - Đố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