Lưu Python mảng 3D

Cảm ơn Ebrahim,
Ban đầu, tôi chỉ sử dụng python open[] để ghi dữ liệu dạng cục, nhưng sau đó tôi thấy nó không hiệu quả, mất quá nhiều thời gian để lưu khối lượng lớn.
Cách của bạn tốt hơn nên tôi đã thay đổi Giải pháp. Tôi đã làm theo các bước của bạn để lưu tệp vtk trên đĩa nhưng có một số sửa đổi.

  1. Tạo một hình ảnh vô hướng 3D chỉ là một ví dụ
import numpy as np

numpy_arr = np.arange[1,61]
numpy_arr = numpy_arr.reshape[5,4,3]
numpy_arr.shape
--> [5, 4, 3]
  1. Tạo một ổ trống mới
nodeName = "MyNewVolume"
imageSize = [5, 4, 3]
voxelType=vtk.VTK_UNSIGNED_CHAR
imageOrigin = [0.0, 0.0, 0.0]
imageSpacing = [0.1, 0.1, 0.1]
imageDirections = [[1,0,0], [0,1,0], [0,0,1]]
fillVoxelValue = 0

# Create an empty image volume, filled with fillVoxelValue
imageData = vtk.vtkImageData[]
imageData.SetDimensions[imageSize]
imageData.AllocateScalars[voxelType, 1]
imageData.GetPointData[].GetScalars[].Fill[fillVoxelValue]

# Create volume node
volumeNode = slicer.mrmlScene.AddNewNodeByClass["vtkMRMLScalarVolumeNode", nodeName]
volumeNode.SetOrigin[imageOrigin]
volumeNode.SetSpacing[imageSpacing]
volumeNode.SetIJKToRASDirections[imageDirections]
volumeNode.SetAndObserveImageData[imageData]
volumeNode.CreateDefaultDisplayNodes[]
  1. Cập nhật các điểm ảnh ba chiều của nút âm lượng của tôi từ một mảng có nhiều mảng
slicer.util.updateVolumeFromArray[volumeNode,numpy_arr]
  1. Lưu volumeNode vào tệp
myStorageNode = volumeNode.CreateDefaultStorageNode[]
myStorageNode.SetFileName["test_data.vtk"]
myStorageNode.WriteData[volumeNode]

Nó khá ổn khi tôi mở test_data này. vtk để kiểm tra

hình ảnh790×239 8. 79 KB

Ngoài ra, tôi đã tải tệp này trong Slicer như sau,

hình ảnh999×819 28. 7KB


Sau đó, tôi lấy lại mảng từ tập này để kiểm tra lại,
volumeNode = getNode['MyNewVolume']
# volumeNode
a = arrayFromVolume[volumeNode]
a.shape
--> [5, 4, 3]

[a==numpy_arr].all[]
--> True

Vì vậy, tôi khá chắc chắn rằng dữ liệu được lưu chính xác dưới dạng tệp vtk.
Một lần nữa xin chân thành cảm ơn sự giúp đỡ của bạn, Ebrahim.

Mảng NumPy là cấu trúc dữ liệu hiệu quả để làm việc với dữ liệu trong Python và các mô hình máy học như trong thư viện scikit-learning và các mô hình học sâu như trong thư viện Keras, mong đợi dữ liệu đầu vào ở định dạng của mảng NumPy và đưa ra dự đoán trong

Do đó, thông thường cần lưu các mảng NumPy vào tệp

Ví dụ: bạn có thể chuẩn bị dữ liệu của mình bằng các phép biến đổi như chia tỷ lệ và cần lưu dữ liệu đó vào tệp để sử dụng sau này. Bạn cũng có thể sử dụng một mô hình để đưa ra dự đoán và cần lưu dự đoán vào tệp để sử dụng sau

Trong hướng dẫn này, bạn sẽ khám phá cách lưu các mảng NumPy của mình vào tệp

Sau khi hoàn thành hướng dẫn này, bạn sẽ biết

  • Cách lưu mảng NumPy vào tệp định dạng CSV
  • Cách lưu mảng NumPy vào tệp định dạng NPY
  • Cách lưu mảng NumPy vào tệp định dạng NPZ đã nén

Bắt đầu dự án của bạn với cuốn sách mới của tôi Machine Learning Mastery With Python, bao gồm các hướng dẫn từng bước và các tệp mã nguồn Python cho tất cả các ví dụ

Bắt đầu nào

Cách lưu một mảng NumPy vào tệp cho máy học
Ảnh của Chris Combe, bảo lưu một số quyền.

Hướng dẫn tổng quan

Hướng dẫn này được chia thành ba phần;

  1. Lưu mảng NumPy vào. Tệp CSV [ASCII]
  2. Lưu mảng NumPy vào. Tệp NPY [nhị phân]
  3. Lưu mảng NumPy vào. Tệp NPZ [đã nén]

1. Lưu mảng NumPy vào. Tệp CSV [ASCII]

Định dạng tệp phổ biến nhất để lưu trữ dữ liệu số trong tệp là định dạng biến được phân tách bằng dấu phẩy hoặc viết tắt là CSV

Rất có thể dữ liệu đào tạo và dữ liệu đầu vào cho các mô hình của bạn được lưu trữ trong tệp CSV

Có thể thuận tiện để lưu dữ liệu vào tệp CSV, chẳng hạn như các dự đoán từ một mô hình

Bạn có thể lưu các mảng NumPy của mình vào tệp CSV bằng hàm savetxt[]. Hàm này lấy tên tệp và mảng làm đối số và lưu mảng thành định dạng CSV

Bạn cũng phải chỉ định dấu phân cách; . Điều này có thể được đặt thông qua đối số "dấu phân cách"

1. 1 Ví dụ về lưu một mảng NumPy vào tệp CSV

Ví dụ dưới đây minh họa cách lưu một mảng NumPy duy nhất sang định dạng CSV

1

2

3

4

5

6

7

# lưu mảng có nhiều mảng dưới dạng tệp csv

từ numpy nhập asarray

từ numpy nhập savetxt

# xác định dữ liệu

dữ liệu = sắp xếp[[[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]]]

# lưu vào tệp csv

savetxt['dữ liệu. csv', dữ liệu, dấu phân cách=',']

Chạy ví dụ này sẽ xác định một mảng NumPy và lưu nó vào tệp 'data. csv‘

Mảng có một hàng dữ liệu với 10 cột. Chúng tôi hy vọng dữ liệu này sẽ được lưu vào tệp CSV dưới dạng một hàng dữ liệu

Sau khi chạy ví dụ, chúng ta có thể kiểm tra nội dung của 'data. csv‘

Chúng ta nên xem những điều sau đây

1

0. 000000000000000000e+00,1. 000000000000000000e+00,2. 000000000000000000e+00,3. 000000000000000000e+00,4. 000000000000000000e+00,5. 000000000000000000e+00,6. 000000000000000000e+00,7. 000000000000000000e+00,8. 000000000000000000e+00,9. 000000000000000000e+00

Chúng ta có thể thấy rằng dữ liệu được lưu chính xác dưới dạng một hàng và các số dấu phẩy động trong mảng được lưu với độ chính xác đầy đủ

1. 2 Ví dụ về việc tải một mảng NumPy từ tệp CSV

Chúng ta có thể tải dữ liệu này sau dưới dạng một mảng NumPy bằng cách sử dụng hàm loadtext[] và chỉ định tên tệp và cùng một dấu phân cách bằng dấu phẩy

Ví dụ đầy đủ được liệt kê dưới đây

1

2

3

4

5

6

# tải mảng numpy từ tệp csv

từ numpy nhập loadtxt

# tải mảng

dữ liệu = loadtxt['data. csv', dấu phân cách=',']

# in mảng

in[dữ liệu]

Chạy ví dụ này sẽ tải tệp numpy đã nén chứa từ điển các mảng, sau đó trích xuất mảng đầu tiên mà chúng tôi đã lưu [chúng tôi chỉ lưu một mảng], sau đó in nội dung, xác nhận các giá trị và hình dạng của mảng khớp với những gì chúng tôi đã lưu trong

Làm cách nào để lưu mảng 3D NumPy dưới dạng CSV?

Bạn có thể sử dụng np. phương thức savetxt[] để lưu mảng Numpy của bạn vào tệp CSV.

Làm cách nào để lưu một mảng trong Python?

Bạn có thể lưu các mảng NumPy của mình vào tệp CSV bằng cách sử dụng hàm savetxt[] . Hàm này lấy tên tệp và mảng làm đối số và lưu mảng thành định dạng CSV.

Mảng 3D được lưu trữ như thế nào?

Các phần tử của mảng ba chiều có thể được coi là một tập hợp các mảng hai chiều, được lưu trữ tuần tự tại các vị trí lưu trữ tăng dần trong mảng.

Python có mảng 3D không?

Trong python, với sự trợ giúp của một danh sách, chúng ta có thể định nghĩa mảng 3 chiều này . Mảng 3 chiều là mảng của mảng.

Chủ Đề