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

Python中numpy.random.randn报错:float对象无法转为整数TypeError

嘿,这个问题我之前调试代码的时候也踩过坑!

错误原因拆解

你看到的TypeError: 'float' object cannot be interpreted as an integer,本质是因为在Python 3里,M/3(也就是30/3)会返回浮点数10.0,而np.random.randn()要求传入的维度参数必须是整数——它没法把10.0当成数组的行数来处理,所以直接报错了。

快速修复方案

把普通除法/换成整数除法//,这样得到的结果就是纯整数了,完全符合randn()的参数要求:

import numpy as np

N = 4
M = 30
# Generar datos a partir de 3 clusters diferentes:
X1 = 10 + 2*np.random.randn(M//3, N)
X2 = -10 + 5*np.random.randn(M//3, N)
X3 = 1*np.random.randn(M//3, N)

进阶优化(应对非3倍数的M)

如果之后你把M改成不是3的倍数的数(比如29),上面的写法会少生成样本。可以加个小处理,把余数补到最后一个聚类里,保证总样本数刚好是M:

import numpy as np

N = 4
M = 29  # 比如改成非3倍数的数
base_size = M // 3
# 把多出来的样本数加到第三个聚类
cluster3_size = base_size + (M % 3)

X1 = 10 + 2*np.random.randn(base_size, N)
X2 = -10 + 5*np.random.randn(base_size, N)
X3 = 1*np.random.randn(cluster3_size, N)

# 验证总样本数:base_size + base_size + cluster3_size = M
print(base_size + base_size + cluster3_size)  # 输出29

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:36:54