是否存在向量化方法打印Numpy数组元素,替代循环实现指定格式输出
Numpy向量化实现指定格式输出方案
你可以通过纯向量化的数组重塑操作实现需求,全程无额外数据拷贝,性能极高,完全适配大规模数组场景:
你的原始数组是3维结构,形状为(外层元素数, 内层子数组数, 3),只需要将前两个维度按原有顺序展平,保持每行3个元素,再直接输出即可,不需要嵌套循环。
完整实现代码
方案1:无Python循环的纯向量化输出
import numpy as np import sys # 你的原始数组 a = np.array([ [[1, 2, 3], [11, 22, 33]], [[4, 5, 6], [44, 55, 66]], ]) # 向量化重塑:自动计算总行数,保持每行3个元素,仅调整数组视图无数据拷贝 flatten_arr = a.reshape(-1, 3) # 直接输出符合要求的格式,fmt指定输出整数,分隔符用空格 np.savetxt(sys.stdout, flatten_arr, fmt='%d', delimiter=' ')
方案2:简化写法(仅单层轻量循环)
如果觉得导入sys太繁琐,也可以对展平后的数组做单层循环,性能仍远高于原有嵌套循环:
import numpy as np a = np.array([ [[1, 2, 3], [11, 22, 33]], [[4, 5, 6], [44, 55, 66]], ]) for row in a.reshape(-1, 3): print(*row)
方案说明
reshape(-1, 3)是纯向量化操作,时间复杂度为O(1),哪怕数组包含数十万条数据也可以瞬间完成- 展平后的数组顺序和你原有嵌套循环的输出顺序完全一致,不会打乱原有数据的排列逻辑
- 如果你不需要直接打印,只是要得到对应结构的数组,拿到
flatten_arr就可以直接使用,不需要后续输出操作
内容的提问来源于stack exchange,提问作者Basir Miah
相关产品推荐
相关产品推荐

