实验3 ---NumPy科学计算库

1.实验目的

①掌握NumPy科学计算库的语法规则;
②能够运用NumPy完成多维数组和矩阵运算。

2.实验内容

根据要求,编写程序,运用NumPy完成多维数组和矩阵运算。

3. 实验过程

题目一:
  生成一个[0,1)之间均匀分布的随机数数组,包含1000个元素, 随机种子为612。接收用户输入一个1-100之间的数字。打印随机数组中所有索引值可以被输入整数整除的数字,并打印序号和索引值。序号从1开始,依次加1。
  程序运行示例:
在这里插入图片描述
  提示:输出时可以使用制表符"\t",对齐各列。
代码实现

import numpy as np
np.random.seed(612) #指定随机种子612
arr = np.random.rand(1000)  #随机生成1-1000的随机数
num = int(input("请输入一个1-100之间的数字"))
index = 1   #序号
print("序号"'\t\t'"索引值" '\t\t\t' "随机数")
if num >= 1 and num <= 100:
    for i in range(1000):
        if i % num == 0:
            print(index,'\t\t',i,'\t\t',arr[i])
            index += 1
else:
    print("输入错误,请重新输入")

题目二
在这里插入图片描述
代码

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])

#求出x和y的平均值
average_x = np.average(x)
average_y = np.average(y)

n = x.size
def w():
    sum1 = 0
    sum2 = 0

    for i in range (n):
        sum1 += (x[i] * average_x) * (y[i] * average_y)
        sum2 +=  (x[i] * average_x) ** 2
    return sum1 / sum2

def b():
    return average_y - w() * average_x

print("W的值为",w())
print("b的值为",b())


题目三
在这里插入图片描述
代码

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 = np.vstack(y)
print("y:",y)

x = np.mat(x)
y = np.mat(y)

w = np.linalg.inv(np.transpose(x) * x) * np.transpose(x) * y
print("w:",w)

print("w的shape",w.shape)

题目四(选做):
请创建随机数组,并完成以下要求:
(1) 创建一个4×4的随机数组,数组元素为1-100之间的整数;输出该数组中的所有元素。
(2) 取出数组中每行的最小值,以及每列的最大值。
(3) 输入数字n,输出数组中行索引为n的一行元素。
(4) 输入数字m、n,输出列索引从m到n的元素,组成一个新数组。

4. 实验小结&讨论题

① 实验过程中遇到了哪些问题,你是如何解决的?
答:软件使用不熟练。

② 在使用NumPy进行多个矩阵连续运算时,有几种方法?需要注意什么?(可自主查阅资料进行补充)
答:矩阵相加运算、矩阵的点乘运算、矩阵的索引操作。两个矩阵相加,需要满足以下至少一个条件:两个矩阵的行数和列数是相等的,其中一个矩阵的行数或者列数是1;索引操作取矩阵某一行元素:行对应位置取对应的行,列对应位置,使用冒号,或者不写、取矩阵某一列元素:行对应位置使用冒号,列对应位置取对应的列。

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YoLo-8

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值