twa*_*ien 8 python arrays runtime-error numpy python-3.x
我在修改数组时遇到了问题,方法是将每个项目与其行相比的百分比添加到新矩阵中。这是提供错误的代码:
for j in range(1,27):
for k in range(1,27):
let_prob[j,k] = let_mat[j,k]*100/(let_mat[j].sum())
Run Code Online (Sandbox Code Playgroud)
我收到错误:
运行时警告:long_scalars 中遇到无效值
我尝试将分母四舍五入,但没有成功。
如果它为遇到此警告的其他人提供任何帮助,它出现在类似的上下文中,其中我将一个值除以另一个值,并且在我除以 0 的情况下出现警告。添加一个特殊情况,其值为分母,并避免零除,使警告消失。
我不知道为什么出现该警告而不是 ZeroDivisionError。
看来您正在处理大数字,因为它引发了错误RuntimeWarning。要消除此类错误,作为一种数字方法,您可以首先使用以下方法计算每行的总和np.sum()函数通过指定正确的轴来计算每行的总和,然后重复并重塑数组,以便能够除以您的数组,它们乘以100和舍入结果:
col, row = np.shape(let_mat) \nlet_prob = np.round((let_mat/np.repeat(let_mat.sum(axis=1),row).reshape(col, row).astype(\xe2\x80\x8c\xe2\x80\x8bfloat))*100,2)\nRun Code Online (Sandbox Code Playgroud)\n\n演示:
\n\n>>> a = np.arange(20).reshape(4,5)\n>>> \n>>> a\narray([[ 0, 1, 2, 3, 4],\n [ 5, 6, 7, 8, 9],\n [10, 11, 12, 13, 14],\n [15, 16, 17, 18, 19]])\n\n>>> np.round((a/np.repeat(a.sum(axis=1),5).reshape(4,5).astype(float))*100,2)\narray([[ 0. , 10. , 20. , 30. , 40. ],\n [ 14.29, 17.14, 20. , 22.86, 25.71],\n [ 16.67, 18.33, 20. , 21.67, 23.33],\n [ 17.65, 18.82, 20. , 21.18, 22.35]])\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
30057 次 |
| 最近记录: |