[问题] 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