初学 Python , Numpy 如何将包含不同大小 3d-array 的 list 转为大小相同的 4d-array 呢?

2017-02-18 14:41:56 +08:00
 nyanyh

可能标题说的不太明白

代码从文件读取数据,然后转为 3d array ,之后 append 到一个 list ,但是每个 array 的 shape 不一定相同,这样无法直接转为 numpy.array. 比如有的是(1, 2, 3),但有的就是(1, 2, 5),我想把每个 array 都转成最长的(1, 2, 5),多余部分填 0

我现在用的代码是:

max_len = np.max([item.shape[2] for item in old_array])
new_array = np.zeros((len(old_array), 1, 2, max_len))
for index, data in enumerate(old_array):
    new_array[index][:, :, :data.shape[2]] = data

有更好的实现方式吗?

2996 次点击
所在节点    Python
2 条回复
ipwx
2017-02-18 15:07:10 +08:00
我觉得你这已经是最好的方法了……

如果你事先知道 maxlen 的话,你可以用 numpy.pad 处理每一条记录。
nyanyh
2017-02-18 15:35:46 +08:00
r#1 @ipwx 就是不知道 max_len 才比较纠结,暂时这么处理了,也没有什么性能要求

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://tanronggui.xyz/t/341397

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX