1

我想获取一个形状(N,)为 和dtype=object的数组,这些数组都具有相同的形状 ,shape,并创建一个具有 的数组shape == (N,) + shape。我想知道是否有人知道这样做的最佳方法。这是一个例子。

import numpy as np
array = np.empty(4, dtype=object)
array[:] = [np.ones([3, 2])]
array = np.array(array.tolist())
print array.dtype
# float64
print array.shape
# (4, 3, 2)
4

1 回答 1

0

如果您已经知道内部数组的形状(此处为(3,2)),则可以将整个过程简化为

subshape = (3,2)
a = np.empty(tuple([N,]+list(subshape)), dtype=object)
a[:] = np.ones(subshape)

这将使您避免不必要的与列表之间的转换。


现在,假设您有一个(N,)对象数组a,其中每个元素都是一个subshape浮点数组,您可以这样做:

a = np.vstack(a)
a.shape = [N,] + list(subshape)

或更简单地说:

a = np.array(a.tolist(), dtype=float)

但是,.tolist转换可能不是很有效。

于 2012-10-22T09:47:54.557 回答