2 回答

TA貢獻1876條經驗 獲得超7個贊
你可以在沒有 numpy 的情況下做到這一點。
ar = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
n = 5
reshaped = [ar[i: i + n] + [None] * (i + n - len(ar)) for i in range(0, len(ar), n)]
您還可以將技巧與迭代器一起使用(塊將在元組中):
reshaped = list(zip(*[iter(ar + [None] * (n - len(ar) % n))] * n))
您可以zip_longest()從 itertools 申請不None自己添加值:
from itertools import zip_longest
reshaped = list(zip_longest(*[iter(ar)] * n))

TA貢獻1943條經驗 獲得超7個贊
In [135]: res = np.empty((3,5), object)
In [136]: res
Out[136]:
array([[None, None, None, None, None],
[None, None, None, None, None],
[None, None, None, None, None]], dtype=object)
In [137]: res.flat[:11] = np.arange(1,12)
In [138]: res
Out[138]:
array([[1, 2, 3, 4, 5],
[6, 7, 8, 9, 10],
[11, None, None, None, None]], dtype=object)
添加回答
舉報