[問題] np.vstack的用法

作者: oo855050 (阿偉)   2020-04-08 14:18:39
版上大大好,
我想請問一下,我的代碼如下
希望用for loop進行資料的疊加
A = np.zeros((1,3)) # A用來儲存資料 (這邊只是先做初始化)
B = np.array([1,2,3])
for i in range(3):
if A.shape[0] == 1:
A = B
else:
A = np.vstack((A,B))
現在這個代碼是可行得,但總覺得寫法好像不夠簡潔
且我在程式內需要有很多類似的操作,所以想說是否有更好的寫法
這樣程式碼看起來也簡潔許多
麻煩版上各位幫忙解惑 > <
作者: cuteSquirrel (松鼠)   2020-04-08 15:08:00
推測原PO想做垂直堆疊,試試看 tile 語法。https://imgur.com/a/n4bSRt6heighe可隨你想要的高度自己改變heightnumpy tile 官網說明: https://bit.ly/2VcQ3Sl若有其他方向的array堆疊需求,也可依此類推。
作者: oo855050 (阿偉)   2020-04-08 15:57:00
先感謝cute大的回覆,上面的code只是個示意而已XD實際上我要疊加的資料並不會完全都是一模一樣的=ˇ=
作者: cuteSquirrel (松鼠)   2020-04-08 16:01:00
了解 XD
作者: mirror0227 (鏡子)   2020-04-08 18:50:00
既然A一開始要被取代掉,就不要在迴圈內指派,直接 vstack 最後去掉第一個就好了
作者: oo855050 (阿偉)   2020-04-08 21:36:00
mir大,這個想法我也有想過XD 不過感覺未來自己讀自己的程式時會沒那麼直觀=ˇ=所以才想說有沒有更好的寫法
作者: hsnuyi (羊咩咩~)   2020-04-08 23:00:00
不說別的 如果要vstack數十萬行以上就會變的很慢 別這樣做看能不能直接在外面用sed或awk對csv操作就好
作者: TuCH (謬客)   2020-04-09 08:33:00
可以先轉成list 在堆疊 效率比較高
作者: mirror0227 (鏡子)   2020-04-09 13:48:00
我自己習慣這樣寫https://bit.ly/2VcFyyt

Links booklink

Contact Us: admin [ a t ] ucptt.com