【发布时间】:2018-05-20 17:41:09
【问题描述】:
我需要创建一个形状为(?, 10, 10, 3) 的空numpy 数组。 ? 表示我不知道要插入多少个元素。然后我有许多形状为(1, 10, 10, 3) 的numpy 数组,我想将它们一一插入到准备好的数组中,因此? 标记将随着插入的元素而增加。
我正在尝试 numpy 数组方法的所有变体,例如 empty、insert、concatenate、append... 但我无法实现这一点。你能帮我解决这个问题吗?
【问题讨论】:
-
不要那样做; NumPy 数组是固定大小的,并且尝试动态扩展它们需要每次都创建一个新数组,这会带来非常昂贵的二次运行时成本。
-
如果您对沿第一个轴的最大可能长度有一些想法,只需使用
out = (M,10,10,3)预先分配,M是最大编号和索引,并在每次迭代时分配:@987654331 @ 保持迭代次数。最后,只需将out[:C]切出C作为最后的迭代次数/计数。 -
谢谢,我不知道。所以我通过删除插入元素的第一个单维条目来做到这一点,将它附加到一个常规的 python 数组中,这使它成为一个 NumPy 数组。它是这样工作的,不确定是否有效。
-
如果你真的必须做这样的事情,不要累积到一个数组中,使用
my_list.append(array_x)累积到一个普通的list对象,然后,做@ 987654336@ -
@juanpa.arrivillaga 是的,我的意思是一个列表,对不起。我按照你的建议做了。