无需使用for循环 将numpy数组拆分为均等长度小段的numpy实现方法
你可以直接用NumPy内置的reshape方法实现需求,全程不需要写任何循环:
实现代码
import numpy as np # 你的原数组 data = np.array( [ 4, -5.5, -9.1, -12.2, -20.0, -20.5, 82, 21, -3, -4, -5, -3, 62, 51, 42, 33, 25, 12, -46, 29, 68, 86, 97, 122 ] ) # 拆分成长度为4的等长段 output = data.reshape(-1, 4)
代码说明
- 这里的
-1是NumPy的自动填充参数,会自动根据数组总元素数和指定的段长4,自动计算拆分后的段数,不需要你手动计算行数。 - 运行后得到的
output是形状为(6,4)的NumPy数组,内容和你给出的预期结果完全一致:
array([[ 4. , -5.5, -9.1, -12.2], [-20. , -20.5, 82. , 21. ], [ -3. , -4. , -5. , -3. ], [ 62. , 51. , 42. , 33. ], [ 25. , 12. , -46. , 29. ], [ 68. , 86. , 97. , 122. ]])
如果你需要最终输出为Python原生列表,只需要追加调用tolist方法即可:
output_list = output.tolist()
注意:该方法要求原数组总元素数可以被设定的段长整除,你当前的场景总元素数为24,段长为4,刚好满足整除条件。
内容的提问来源于stack exchange,提问作者Jane Foster
相关产品推荐
相关产品推荐

