【发布时间】:2014-11-03 07:32:19
【问题描述】:
我有一个循环读取文件直到到达结尾。在每次通过循环时,我都会提取一个 1D numpy 数组。我想将此数组附加到二维方向上的另一个 numpy 数组。也就是说,我可能会以某种形式阅读
x = [1,2,3]
我想将它附加到表单中
z = [[0,0,0],
[1,1,1]]
我知道我可以简单地做z = numpy.append([z],[x],axis = 0) 并达到我想要的结果
z = [[0,0,0],
[1,1,1],
[1,2,3]]
我的问题来自这样一个事实,即在循环的第一次运行中,我没有任何要附加的内容,因为读入的第一个数组是 2D 数组的第一行。我不想写一个 if 语句来处理第一种情况,因为那很难看。如果我使用列表,我可以在循环之前简单地执行z = [],并且每次读取数组时,只需执行z.append(x) 即可达到我想要的结果。但是我找不到在 numpy 中做类似的程序的方法。我可以创建一个空的 numpy 数组,但是我不能以我想要的方式附加到它。任何人都可以帮忙吗?我说的有道理吗?
编辑:
经过更多研究,我发现了另一种解决方法,它在技术上确实可以满足我的要求,尽管我认为我会采用@Roger Fan 给出的解决方案,因为 numpy 附加非常慢。我把它贴在这里只是为了让它在那里。
我仍然可以在循环的开头定义z = []。然后用 `np.append(z, x) 附加我的数组。这最终会给我类似的东西
z = [0,0,0,1,1,1,1,2,3]
然后,因为我读入的所有数组的大小都相同,所以在循环之后我可以简单地使用 `np.resize(n, m)' 调整大小并得到我想要的。
【问题讨论】: