目录
1. 实验目的
2. 实验内容
3. 实验过程
题目一:
① 代码
② 实验结果
题目二:
① 代码
② 实验结果
题目三:
编辑
① 代码
② 实验结果
5. 实验小结
① 实验过程中遇到了哪些问题,你是如何解决的?
② 拓展题(选做)
1. 实验目的
①掌握NumPy科学计算库的语法规则
②能够运用NumPy完成多维数组和矩阵运算
2. 实验内容
根据要求,编写程序,运用NumPy完成多维数组和矩阵运算
3. 实验过程
题目一:
生成一个[0,1)之间均匀分布的随机数数组,包含1000个元素, 随机种子为612。接收用户输入一个1-100之间的数字。打印随机数组中所有索引值可以被输入整数整除的数字,并打印序号和索引值。序号从1开始,依次加1。(提示:输出时可以使用制表符"\t",对齐各列)
程序运行示例:
请输入一个1-100之间的整数:50 |
① 代码
import numpy as np
np.random.seed(612)
array = np.random.rand(1000)
num = int(input("请输入一个1-100之间的数字:"))
count= 1
if num>=1 and num<=100:
print("序号 索引值 随机数")
for i in range(0, 1000):
if i % num == 0:
print(count, " ",i ," " ,array[i])
count+=1
else:
print("您输入的数字大于100")
② 实验结果
题目二:
① 代码
import numpy as np
x = np.array([64.3,99.6,145.45,63.75,135.46,92.85,86.97,144.76,59.3,116.03])
y = np.array([62.55,82.42,132.62,73.31,131.05,86.57,85.49,127.44,55.25,104.84])
average_x =np.average(x)
average_y =np.average(y)
def count_w():
sum1 = 0
sum2 = 0
for i in range(0,10):
sum1 += (x[i]-average_x)*(y[i]-average_y)
sum2 += (x[i]-average_x)*(x[i]-average_x)
return sum1/sum2
def count_b():
return average_y-count_w()*average_x
if __name__ == '__main__':
print('w的值是:'+str(count_w()))
print('b的值是:'+str(count_b()))
print(average_x)
print(average_y)
② 实验结果
题目三:
① 代码
import numpy as np
x0 = np.ones(10)
x1 = np.array([64.3,99.6,145.45,63.75,135.46,92.85,86.97,144.76,59.3,116.03])
x2 = np.array([2,3,4,2,3,4,2,4,1,3])
y = np.array([62.55,82.42,132.62,73.31,131.05,86.57,85.49,127.44,55.25,104.84])
x = np.stack((x0,x1,x2),axis = 1)
print('x的矩阵为:',x)
y = y.reshape(10,1)
print('y的矩阵为:',y)
x = np.matrix(x)
y = np.matrix(y)
w = np.linalg.inv(np.transpose(x)*x)*np.transpose(x)*y
print('w的矩阵为:',w)
print('w的形状为:',w.shape)
② 实验结果
5. 实验小结
① 实验过程中遇到了哪些问题,你是如何解决的?
数组不能直接计算,必须把数组转换为矩阵才可以正常计算。
第二个题目输入有错误,没有仔细核对,第三个换用更简短的代码实现
② 拓展题(选做)
请创建一个4×4的随机数组,计算每行每列的最小值,并按照从小到大的顺序输出成4×2的数组。
import numpy as np
np.random.seed(612)
a = np.array(np.random.rand(4, 4))
y = np.sort(a, axis=0) # 按列进行排序
minLine = y[0] # 切分出每列最小的数值
x = np.sort(a, axis=1) # 按行进行排序
minRow = x[0:4, 0] # 切分出每行最小的数值
minx = np.stack((minLine, minRow), axis=1)
minx.resize(8) # 改变数组形状以方便排序
aimArray = np.sort(minx)
aimArray.resize(4, 2)
if __name__ == '__main__':
print("原数组:\n",a)
print("生成数组:\n",aimArray)