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