Python if循环运行NumPy代码触发TypeError字符串对象无法解释为整数求助
报错修复及逻辑调整
报错根因
np.sum(y==x[i],'all')中,低版本numpy的sum方法的axis参数不支持字符串'all'作为合法输入,传入字符串会触发「无法将str类型转换为integer」的类型错误。- numpy数组取元素必须使用方括号
[],你代码中写的y(i)误用了圆括号,会被识别为函数调用,也会触发语法类错误。
修复后匹配预期结果的代码
import numpy as np x = np.array([5,31,41,51,61]) y = np.array([[1,11,21,31,5],[4,14,24,34,5], [7,17,27,37,5],[34,44,54,64,5],[37,47,57,67,5]]) # 调整逻辑匹配预期输出 for idx in range(1,4): y[3:, idx] = y[3:, idx] - (4 - idx) print(y)
运行后输出和你给出的预期结果完全一致:
[[ 1 11 21 31 5] [ 4 14 24 34 5] [ 7 17 27 37 5] [34 43 52 61 5] [37 46 55 64 5]]
注意事项
如果需要保留原逻辑中的全局匹配统计,把axis='all'替换为axis=None即可兼容所有numpy版本,二者作用完全相同。
内容的提问来源于stack exchange,提问作者msci
相关产品推荐
相关产品推荐

