如何将矩阵整数转为浮点数?浮点矩阵与象限均值计算问题
问题:无法生成含浮点数的矩阵并计算均值
我编写了如下Python代码:
import numpy as np n = float(input("Starting number : " )) m = float(input("Ending Number : ")) a = np.random.randint(n,m, size=(10,10)) print("\na : ", a) top_left = [a[0][:5], a[1][:5]] top_right = [a[0][5:], a[1][5:]] bot_left = [a[2][:5], a[3][:5]] bot_right = [a[2][5:], a[3][5:]] print("\n") print("1st quadrant : ", top_right) print("2nd quadrant : ", top_left) print("3rd quadrant : ", bot_left) print("4th quadrant : ", bot_right) print("\n") avg1 = np.average(top_right) print("Average of 1st quadrant : " ,avg1) avg2 = np.average(top_left) print("Average of 2nd quadrant : " ,avg2) avg3 = np.average(bot_left) print("Average of 3rd quadrant : " ,avg3) avg4 = np.average(bot_right) print("Average of 4th quadrant : " ,avg4)
代码功能为生成10×10矩阵,矩阵数值范围由用户输入的两个数决定,随后划分四个象限并计算各象限均值。我希望支持输入两个浮点数,生成含浮点数的矩阵并以浮点数形式计算均值,但无法实现,请问遗漏了什么?
问题原因
你用错了随机数生成函数:np.random.randint() 仅能生成整数类型的随机数,即便输入的n和m是浮点数,它也会自动截断为整数来生成结果,所以矩阵里全是整数,自然无法得到浮点数矩阵。
解决方案
- 替换随机数生成函数:使用
np.random.uniform(n, m, size=(10,10)),该函数支持浮点数范围输入,生成的矩阵元素为浮点数。 - 优化象限切片方式:用numpy数组的切片语法替代手动列表嵌套,代码更简洁且符合numpy的使用规范。
修改后的完整代码:
import numpy as np n = float(input("Starting number : " )) m = float(input("Ending Number : ")) # 生成指定范围的浮点数矩阵 a = np.random.uniform(n, m, size=(10,10)) print("\na : ", a) # 用numpy切片直接获取象限(更简洁规范) top_left = a[:2, :5] # 前2行,前5列 top_right = a[:2, 5:] # 前2行,后5列 bot_left = a[2:4, :5] # 第3-4行,前5列 bot_right = a[2:4, 5:] # 第3-4行,后5列 print("\n") print("1st quadrant : ", top_right) print("2nd quadrant : ", top_left) print("3rd quadrant : ", bot_left) print("4th quadrant : ", bot_right) print("\n") avg1 = np.average(top_right) print("Average of 1st quadrant : ", avg1) avg2 = np.average(top_left) print("Average of 2nd quadrant : ", avg2) avg3 = np.average(bot_left) print("Average of 3rd quadrant : ", avg3) avg4 = np.average(bot_right) print("Average of 4th quadrant : ", avg4)
现在输入浮点数(比如2.5和7.8)就能生成浮点数矩阵,均值也会以浮点数形式输出。
内容的提问来源于stack exchange,提问作者ceilowens
相关产品推荐
相关产品推荐

