You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何无分隔符打印布尔类型NumPy数组?

布尔型NumPy数组的自定义格式打印技巧

关于np.set_printoptions的可行性

无法通过np.set_printoptions实现完全去除数组默认的括号、引号与空格分隔符。该配置项主要用于调整数值打印的精度、显示阈值等参数,无法彻底修改字符串数组的输出格式为纯文本行模式。

可行的NumPy实现方法

以下几种方法无需双重循环遍历每个元素,即可实现目标输出:

方法1:结合np.where与np.apply_along_axis

通过np.where完成布尔值到目标字符的映射,再用np.apply_along_axis将每行字符拼接为字符串,最后逐行打印:

import numpy as np

a = np.array([[0, 1, 0, 0], [1, 1, 1, 1], [0, 0, 0, 0], [0, 0, 0, 0]], dtype=bool)

def showGrid(g):
    # 将布尔数组映射为字符数组
    char_grid = np.where(g, '8', '.')
    # 对每行执行字符串拼接
    line_strings = np.apply_along_axis(''.join, axis=1, arr=char_grid)
    # 打印所有行
    print('\n'.join(line_strings))

showGrid(a)

输出结果:

.8..
8888
....
....

方法2:扁平化数组后按行分割拼接

先将字符数组扁平化,再按原数组的列数拆分并拼接每行内容:

def showGrid(g):
    char_flat = np.where(g, '8', '.').flatten()
    col_count = g.shape[1]
    # 按列数拆分扁平化后的字符数组,拼接每行
    line_strings = [''.join(char_flat[i:i+col_count]) for i in range(0, len(char_flat), col_count)]
    print('\n'.join(line_strings))

方法3:利用np.char.array的拼接特性

借助np.char.array的sum方法实现行内字符拼接:

def showGrid(g):
    char_arr = np.char.array(np.where(g, '8', '.'))
    # sum(axis=1)会将每行的字符拼接为单个字符串
    print('\n'.join(char_arr.sum(axis=1)))

内容的提问来源于stack exchange,提问作者Paul Jurczak

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 03:50:13