Sau đây tạo ra một mảng NumPy C tiếp giáp:Cách rẻ nhất để có được một mảng numpy vào thứ tự tiếp giáp C?
import numpy
a = numpy.ones((1024,1024,5))
Bây giờ nếu tôi cắt nó, kết quả có thể không còn được như vậy. Ví dụ:
bn = a[:, :, n]
với n
từ 0 đến 4. Vấn đề của tôi là tôi cần bn
là C tiếp giáp, và tôi cần phải làm điều này cho nhiều trường hợp một. Tôi chỉ cần mỗi bn
một lần, và muốn tránh làm
bn = bn.copy(order='C')
Tôi cũng không muốn viết lại mã của tôi như vậy mà
a = numpy.ones((5,1024,1024))
Có một cách nhanh hơn, rẻ hơn để có được bn
hơn làm Bản sao chép?
Bối cảnh:
Tôi muốn băm từng miếng mỗi a
, sử dụng
import hashlib
hashlib.sha1(a[:, :, n]).hexdigest()
Thật không may, điều này sẽ ném một ValueError
, phàn nàn về đơn đặt hàng. Vì vậy, nếu có một cách nhanh chóng để có được băm tôi muốn, tôi cũng sẽ sử dụng nó.
Trên một lưu ý liên quan, tôi chỉ biết về hành vi của hashlib bằng cách thực hiện một _lot_ gỡ lỗi cho đến khi tôi tìm thấy nơi ngoại lệ mà thực sự đến từ đâu. Không nên các tài liệu python đề cập đến điều này? –