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

NumPy中random.randint调用reshape报int无属性错误原因

报错触发原因

核心问题是你没有给np.random.randint传入size参数时,函数的返回值类型和预期不符:

  • 你参考的链式写法np.arange(50).reshape(10,5)能正常运行,是因为np.arange(50)默认返回长度为50的一维numpy ndarray数组,数组对象自带reshape方法,只要变形前后元素总数一致就能正常调用。
  • 你写的可正常运行的tirage2=np.random.randint(0,2,size=(10,5)),是因为传入了size=(10,5)参数,函数直接返回形状为10行5列的二维ndarray数组。
  • 报错的代码tirage3=np.random.randint(0,2).reshape(5,10)里,np.random.randint(0,2)没有指定size参数,函数只会返回单个随机整数(值为0或1,类型是Python原生int),int类型对象不存在reshape方法,自然会抛出AttributeError: 'int' object has no attribute 'reshape'。
正确使用方法

根据需求选任意一种写法即可:

  1. 直接指定输出形状,是最简洁的写法:
tirage3 = np.random.randint(0, 2, size=(5, 10))
  1. 如果你确实要链式调用reshape,需要先生成对应总元素数的一维数组,再做形状转换。5行10列的数组总共有50个元素,所以先生成长度为50的一维随机整数数组再变形:
tirage3 = np.random.randint(0, 2, size=50).reshape(5, 10)

注意:调用reshape时必须保证变形前后的元素总数完全匹配,比如长度50的一维数组只能转换成(5,10)、(10,5)、(2,25)这类总元素数乘积为50的形状,否则会报形状不匹配的错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 13:36:23