问题
我有一个数组:[[ 1., 2., 3.],
[ 4., 5., 6.],
[ 7., 8., 9.],
[10.]]
我想知道将这个数组放在以下形状上的最佳方法:
foo
我该怎么办?
谢谢!
我目前的工作
由于numpy.reshape()
不包含使用import numpy as np
np.reshape(foo,(-1,3))
的3个元素中的多个,因此会出错
_foo = np.reshape(foo[:len(foo)-len(foo)%3],(-1,3))
print(_foo)
[[1 2 3]
[4 5 6]
[7 8 9]]
ValueError:无法将大小为10的数组重塑为shape(3)
所以我需要强制我的数组包含多个3个元素,可以通过删除一些(但我丢失了一些数据):
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]]
进行扩展:
nan
备注
0
或ngx.var.scheme
填充)答案 0 :(得分:1)
您可以使用@NedBatchelder's chunk generator(在那里投票)。
def chunks(l, n):
"""Yield successive n-sized chunks from l."""
for i in range(0, len(l), n):
yield l[i:i + n]
lst = [1,2,3,4,5,6,7,8,9,10]
list(chunks(lst, 3))
# [[1, 2, 3],
# [4, 5, 6],
# [7, 8, 9],
# [10]]