ravel ()และฟังก์ชั่นflatten ()จาก numpy เป็นสองเทคนิคที่ฉันจะลองที่นี่ ฉันจะต้องการที่จะเพิ่มไปโพสต์ที่ทำโดยโจ , Siraj , ฟองและKevad
Ravel:
A = M.ravel()
print A, A.shape
>>> [1 2 3 4] (4,)
เรียบ:
M = np.array([[1], [2], [3], [4]])
A = M.flatten()
print A, A.shape
>>> [1 2 3 4] (4,)
numpy.ravel()
เร็วกว่าเนื่องจากเป็นฟังก์ชันระดับไลบรารีซึ่งไม่ได้คัดลอกอาร์เรย์ อย่างไรก็ตามการเปลี่ยนแปลงใด ๆ ในอาเรย์ A จะส่งต่อไปยังอาเรย์ M ตัวเดิมหากคุณใช้งานnumpy.ravel()
อยู่
numpy.flatten()
numpy.ravel()
จะช้ากว่า แต่ถ้าคุณใช้numpy.flatten()
เพื่อสร้าง A การเปลี่ยนแปลงใน A จะไม่ถูกนำไปใช้กับอาร์เรย์ Mเดิม
numpy.squeeze()
และM.reshape(-1)
จะช้ากว่าและnumpy.flatten()
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