[英]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))
並記住兩件事,以備將來使用類似的方法:
reshape 方法接受一個元組作為輸入,在這種情況下(8,6)
,調用b = a.reshape(8,6)
會為該方法提供 2 個 int 參數,而不是它期望的元組。 始終注意期望值。 您可以通過將鼠標懸停在 pycharm 和大多數編輯器中的函數上來進行調查。
在 numpy 中,許多方法不會操作給定的對象,而是返回一個新值供您使用。 總是在文檔中檢查它是健康的,為了避免災難性的心碎,相信我。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.