Tôi cố gắng để sử dụng resize
trên một mảng theo cách này:Numpy, mảng không có dữ liệu riêng?
a = np.array([1,2,3,4,5,6], dtype=np.uint8)
a.resize(4,2)
print a
và đầu ra là Ok (tôi muốn nói rằng không có lỗi)!. Nhưng khi tôi chạy mã này:
a = np.array([1,2,3,4,5,6], dtype=np.uint8).reshape(2,3)
a.resize(4,2)
print a
nó đã dẫn đến một lỗi, nói rằng, ValueError: cannot resize this array: it does not own its data
Câu hỏi của tôi: tại sao sau khi áp dụng reshape
quyền sở hữu của mảng được thay đổi? Quyền sở hữu được cấp cho ai! reshape
không tạo ra một bộ nhớ mới và nó đang thực hiện hoạt động của nó trên cùng một bộ nhớ mảng! Vậy tại sao quyền sở hữu sẽ thay đổi?
Tôi đọc np.reshape và ndarray.resize tài liệu nhưng tôi không thể hiểu lý do. Tôi đọc this post. Tôi có thể kiểm tra ndarray.flags
trước khi áp dụng phương thức resize
.
'a = np.array ([1,2,3,4,5,6], dtype = np.uint8) ', những hai kết quả khác nhau: 'np.resize (a, (4,2))' 'a.resize (4,2); in a'. Nó không phải là một circumvent –
@CTZhu Tốt điểm họ tăng hình dạng theo hai cách khác nhau. – Daniel
Một cách khác là sửa đổi thuộc tính 'hình dạng' của mảng. (ví dụ: 'a.shape = (2, 3)') Việc này định dạng lại tại chỗ mà không tạo chế độ xem mới. –