Hàm ravel () và flatten () từ numpy là hai kỹ thuật mà tôi sẽ thử ở đây. Tôi sẽ muốn thêm vào các bài viết được thực hiện bởi Joe , Siraj , bong bóng và Kevad .
Ravel:
A = M.ravel()
print A, A.shape
>>> [1 2 3 4] (4,)
Làm phẳng:
M = np.array([[1], [2], [3], [4]])
A = M.flatten()
print A, A.shape
>>> [1 2 3 4] (4,)
numpy.ravel()
là nhanh hơn , vì nó là một hàm cấp thư viện không tạo ra bất kỳ bản sao nào của mảng. Tuy nhiên, bất kỳ thay đổi nào trong mảng A sẽ tự chuyển sang mảng M ban đầu nếu bạn đang sử dụngnumpy.ravel()
.
numpy.flatten()
là chậm hơn so vớinumpy.ravel()
. Nhưng nếu bạn đang sử dụng numpy.flatten()
để tạo A, thì những thay đổi trong A sẽ không được chuyển sang mảng M ban đầu .
numpy.squeeze()
và M.reshape(-1)
chậm hơn numpy.flatten()
và numpy.ravel()
.
%timeit M.ravel()
>>> 1000000 loops, best of 3: 309 ns per loop
%timeit M.flatten()
>>> 1000000 loops, best of 3: 650 ns per loop
%timeit M.reshape(-1)
>>> 1000000 loops, best of 3: 755 ns per loop
%timeit np.squeeze(M)
>>> 1000000 loops, best of 3: 886 ns per loop