如何打印绑定到类实例的numpy数组?访问create_grid返回值方法
Python类与Numpy数组问题解答
问题1:绑定到类实例的numpy数组能否被打印?
可以,只要将numpy数组赋值为类的实例属性(比如self.grid),就能通过实例直接访问并打印,没有限制。
问题2:如何访问create_grid方法的返回值并实现指定格式打印?
核心是把create_grid生成的数组保存为实例属性,同时优化print_grid的实现逻辑,避免硬编码。以下是修正后的完整代码:
import numpy as np class Map: def __init__(self, n): self.n = n # 将create_grid的返回值保存为实例属性self.grid self.grid = self.create_grid(n) def create_grid(self, n): arr = np.random.randint(0, 2, size=(n, n)) # 转为字符串类型,满足后续计算需求 res = arr.astype(str) return res def print_grid(self): # 遍历每行,按期望格式打印 for row in self.grid: print(f"[{', '.join(row)}]")
使用示例
map1 = Map(5) map1.print_grid()
输出效果(随机生成,每次结果不同)
[0, 1, 1, 1, 0]
[0, 0, 1, 1, 0]
[0, 0, 0, 1, 0]
[0, 0, 0, 0, 0]
[0, 1, 0, 1, 0]
原代码的问题修正说明
- 原
__init__方法仅调用create_grid但未保存返回值,导致print_grid无法访问生成的数组;现在将返回值赋值给self.grid,实例内部所有方法都能直接调用。 - 原
print_grid硬编码range(5),无法适配不同的n值;改用遍历self.grid的行,代码更简洁通用。 - 通过
', '.join(row)快速将每行的字符串元素转为逗号分隔格式,匹配你期望的输出样式。
内容的提问来源于stack exchange,提问作者Zoltan Mrsan
相关产品推荐
相关产品推荐

