簡體   English   中英

為什么我不能重塑或調整我的 numpy 數組的大小

[英]why I cannot reshape or resize my numpy array

我有以下輸出

 [  1.   3.   5.   7.   9.  11.  13.  15.  17.  19.  21.  23.  25.  27.
    29.  31.  33.  35.  37.  39.  41.  43.  45.  47.  97.  99. 101. 103.
    105. 107. 109. 111. 113. 115. 117. 119. 121. 123. 125. 127. 129. 131.
    133. 135. 137. 139. 141. 143.]

我想把它改成下面的樣子

[[1.   3.   5.   7.   9.   11.  13.  15.]
 [17.  19.  21.  23.  25.  27.  29.  31.]
 [33.  35.  37.  39.  41.  43.  45.  47.]
 [97.  99. 101. 103.  105. 107. 109. 111.]
 [113. 115. 117. 119. 121. 123. 125. 127.]
 [129. 131. 133. 135. 137. 139. 141. 143.]]

我嘗試使用a.resize(6, 8) ,但它給了我這個錯誤:“調整大小僅適用於單段數組”此外,當我嘗試使用a.reshape(6, 8) ,它給了我相同的數組。 我不明白這是什么原因,因為我已經測試了另一個陣列並且運行良好。

嘗試a.reshape((8, 6))注意雙括號

a = np.array([1., 3., 5., 7., 9., 11., 13., 15., 17., 19., 21., 23., 25., 27.,
              29., 31., 33., 35., 37., 39., 41., 43., 45., 47., 97., 99., 101., 103.,
              105., 107., 109., 111., 113., 115., 117., 119., 121., 123., 125., 127., 129., 131.,
              133., 135., 137., 139., 141., 143.])
print(a.reshape((8, 6)))

出去:

[[  1.   3.   5.   7.   9.  11.]
 [ 13.  15.  17.  19.  21.  23.]
 [ 25.  27.  29.  31.  33.  35.]
 [ 37.  39.  41.  43.  45.  47.]
 [ 97.  99. 101. 103. 105. 107.]
 [109. 111. 113. 115. 117. 119.]
 [121. 123. 125. 127. 129. 131.]
 [133. 135. 137. 139. 141. 143.]]

Process finished with exit code 0

請注意,對於您請求的輸出,尺寸應為

a.reshape((6,8))

出去:

[[  1.   3.   5.   7.   9.  11.  13.  15.]
 [ 17.  19.  21.  23.  25.  27.  29.  31.]
 [ 33.  35.  37.  39.  41.  43.  45.  47.]
 [ 97.  99. 101. 103. 105. 107. 109. 111.]
 [113. 115. 117. 119. 121. 123. 125. 127.]
 [129. 131. 133. 135. 137. 139. 141. 143.]]

Process finished with exit code 0

你可以在這里閱讀關於 NumPy 的重塑: 重塑文檔

嘗試

b = a.reshape((8,6))

並記住兩件事,以備將來使用類似的方法:

  1. reshape 方法接受一個元組作為輸入,在這種情況下(8,6) ,調用b = a.reshape(8,6)會為該方法提供 2 個 int 參數,而不是它期望的元組。 始終注意期望值。 您可以通過將鼠標懸停在 pycharm 和大多數編輯器中的函數上來進行調查。

  2. 在 numpy 中,許多方法不會操作給定的對象,而是返回一個新值供您使用。 總是在文檔中檢查它是健康的,為了避免災難性的心碎,相信我。

暫無
暫無

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

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