【发布时间】:2018-08-15 08:04:08
【问题描述】:
问题
我有一个数组:foo = [1,2,3,4,5,6,7,8,9,10]
我想知道让这个数组具有以下形状的最佳方法:
[[ 1., 2., 3.],
[ 4., 5., 6.],
[ 7., 8., 9.],
[10.]]
我该怎么办?
谢谢!
我目前在做什么
由于 foo 不包含 3 个元素的倍数,因此使用 numpy.reshape() 会出错
import numpy as np
np.reshape(foo,(-1,3))
ValueError: 无法将大小为 10 的数组重新整形为形状 (3)
所以我需要强制我的数组包含 3 个元素的多个元素,或者通过删除一些(但我丢失了一些数据):
_foo = np.reshape(foo[:len(foo)-len(foo)%3],(-1,3))
print(_foo)
[[1 2 3]
[4 5 6]
[7 8 9]]
或者通过nan扩展:
if len(foo)%3 != 0:
foo.extend([np.nan]*((len(foo)%3)+1))
_foo = np.reshape(foo,(-1,3))
print(_foo)
[[ 1. 2. 3.]
[ 4. 5. 6.]
[ 7. 8. 9.]
[10. nan nan]]
备注
- @cᴏʟᴅsᴘᴇᴇᴅ 建议改为使用完整数组(例如使用
nan或0填充)
【问题讨论】: