簡體   English   中英

如何重塑此numpy數組以排除“額外尺寸”?

[英]How to reshape this numpy array to exclude the “extra dimension”?

我有一個numpy數組arr1 ,它是函數的輸出。 該數組具有“額外”維度,這是由於numpy數組中的每個元素本身都被強制轉換為numpy數組所致。

arr1.shape輸出(100, 20, 1) arr1.shape (100, 20, 1)

如果我打印數組,則print(arr1[0])輸出

array([[-212537.61715316],
       [   7258.38476409],
       [  37051.91250884],
       [-146278.00512207],
       [-185792.24620168],
       [-200794.59538468],
       [-195981.27879612],
       [-177912.26034464],
       [-152212.805867  ],
       [-118873.26452198],
       [ -64657.64682999],
       [ 306884.11196766],
       [-191073.9891907 ],
       [-104992.44840277],
       [ -67834.43041102],
       [ -21810.77063542],
       [  17307.24511071],
       [  55607.49775471],
       [  91259.82533592],
       [ 119207.40589797]])

如果我使用arr1.reshape((100,20))重塑, arr1.reshape((100,20))得到以下print(arr1.reshape((100,20))[0])

array([-212537.61715316,    7258.38476409,   37051.91250884,
       -146278.00512207, -185792.24620168, -200794.59538468,
       -195981.27879612, -177912.26034464, -152212.805867  ,
       -118873.26452198,  -64657.64682999,  306884.11196766,
       -191073.9891907 , -104992.44840277,  -67834.43041102,
        -21810.77063542,   17307.24511071,   55607.49775471,
         91259.82533592,  119207.40589797])

我的問題是:如何排除此“額外”對象,但保留數組arr1的原始形狀?

是使用.reshape()的最佳方法嗎? 如果沒有,什么是最好的方法?

您可能正在尋找numpy.squeeze

http://docs.scipy.org/doc/numpy-1.10.1/reference/generated/numpy.squeeze.html

a = np.arange(10*20).reshape((10, 20, 1))
print(a.shape)
# (10, 20, 1)
a = a.squeeze()
print(a.shape)
# (10, 20)

請注意其他答案,因為您的reshape應該可以正常工作,而您只是錯誤地查看了輸出。

您正在正確使用reshape

 arr2 = arr1.reshape((100,20))

其形狀將為(100,20),與沒有最后尺寸的arr1相同。

arr1[0]形狀為(20,1),因此打印為一列。

arr2[0]形狀為(20,),因此打印為一行(計數括號)。 您可能不喜歡顯示器,但是形狀正確。

squeeze也可以用來去除多余的尺寸,但結果將相同。

print(arr2[0][:,None])應該打印為一列。 它可以在打印之前有效地增加額外的尺寸。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM