numpy随机选值拼接字符串报UFuncTypeError问题求助
报错根因
- 你调用
np.random.choice时传入了第二个参数1,此时返回结果是一维numpy字符串数组,而非Python原生字符串。Python的+运算符不支持原生字符串和numpy数组直接拼接,因此触发类型错误。 - 报错信息中提到的
ufunc 'add' did not contain a loop with signature matching types就是numpy未实现字符串与numpy数组相加逻辑的明确提示。
修复方法
有两种可直接落地的修改方案:
- 直接省略
np.random.choice的第二个参数,此时函数会默认返回单个随机元素而非数组:
def generateHand(): cardOne = ("one", "two", 'three', "four", "five", "six", 'seven', "eight", "nine", "10", "jack", "queen", "king") suits = ["spades", "diamonds", "hearts", "clubs"] suitUse = np.random.choice(suits) cardOneVar = np.random.choice(cardOne) print("A" + cardOneVar + "Of" + suitUse)
- 保留参数
1,通过索引取数组中的第一个元素转为原生字符串:
suitUse = np.random.choice(suits, 1)[0] cardOneVar = np.random.choice(cardOne, 1)[0]
内容的提问来源于stack exchange,提问作者oscar
相关产品推荐
相关产品推荐

