【发布时间】:2016-05-16 14:54:05
【问题描述】:
我需要从一维数组和标量列表中创建一个二维 numpy 数组,以便复制标量以匹配一维数组的长度。
期望行为示例
>>> x = np.ones(5)
>>> something([x, 0, x])
array([[ 1., 1., 1., 1., 1.],
[ 0., 0., 0., 0., 0.],
[ 1., 1., 1., 1., 1.]])
我知道列表的矢量元素总是具有相同的长度(形状),因此我可以通过执行以下操作“手动”完成:
def something(lst):
for e in lst:
if isinstance(e, np.ndarray):
l = len(e)
break
tmp = []
for e in lst:
if isinstance(e, np.ndarray):
tmp.append(e)
l = len(e)
else:
tmp.append(np.empty(l))
tmp[-1][:] = e
return np.array(tmp)
我要问的是是否有一些现成的解决方案隐藏在 numpy 的某个地方,或者,如果没有,是否有比上述解决方案更好(例如更通用、更可靠、更快)的解决方案。
【问题讨论】:
标签: python arrays numpy scalar