2021-09-25

本文通过一系列Python代码示例,详细介绍了如何使用numpy库进行矩阵操作,包括创建数组、筛选偶数、切片、计算行和、矩阵乘法、数组重塑、水平堆叠、元素排重、条件赋值、线性方程求解及多元线性回归等。同时,文章强调了熟悉这些函数对于提升编程效率的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第四章课后习题答案《从零开始学python数据分析与数据挖掘》

import numpy as np

#exercise1
num1 = np.array([2,3,5,7])
print(num1)

#exercise2
num2 = np.array([1,12,11,17,13,18,12,14])
print(num2[np.fmod(num2,2) == 0])
print(num2[num2 % 2 == 0])

#exercise3
num3 = np.array([[1,12,11,17],[13,18,12,14],[8,11,14,10],[6,8,9,22]])
print(num3[2,:])
print(num3[:,1])

#exercise4 计算数组每行的和
num4 = num3
print(np.sum(num4,axis = 1))

#exercise6 将5*3的矩阵和3*2的矩阵相乘
num5_1 = np.random.rand(5,3)
num5_2 = np.random.rand(3,2)
print(num5_1,num5_2)
print(np.dot(num5_1,num5_2))

#exercise7 将矩阵num4转化为8*2的矩阵
print(np.resize(num4,(8,2)))

#exercise8  水平堆叠,因为它们俩的行数是一样的
a = np.arange(0,10).reshape(2,-1)
b = np.repeat(1,10).reshape(2,-1)
print(np.hstack((a,b)))

#exercise9 元素的排重 其实这个问题在chapter3中写过一种方法现在我们再使用一种不同的方法进行排重
num_9 = np.array([1,2,3,2,3,4,3,4,5,6])
print(np.unique(num_9))


#exercise10,首先计算余数为0的位置然后将其填为-1,奇数则填原值
num_10 = num3
print(np.where(num_10 % 2 ==0,-1,num_10))

#exercise11
A = np.array([[1,1],[2,3]])
b = np.array([7,18])
beta = np.linalg.solve(A, b)

#12 如何根据已知的自变量x,y计算出多元线性回归模型的系数
#首先根据回归的1方程写出A和b,然后使用numpy.linalg.lstsp(A,B)方法根据最小二乘计算出beta

#13
num12 = np.random.randint(0,10,size = 10)
print(num2)
print(np.where(num12 == np.max(num12),0,num12))

#14
def game(money , counts):
    
    i = 1
    while i <= counts:
        i = i + 1
        p = np.random.uniform(0,1)
        if p <= 0.5 :
            money = money + 8
        else :
            money = money -8
            if money < 0:
                print('对不起您的余额不足请充值!')
                return money
    print('经过{}次的游戏,您还剩余{}元'.format(counts,money))
money = 1000
money = game(money,1000)

本章重点内容汇总:

在这里插入图片描述
我感觉这里面函数用的比较多的就是堆叠函数的使用,还有一些函数我在这里没有列举出来,像where函数,和if的使用方法有一些相同之处,但是还有一些其他的用途,大家可以自己多去尝试使用一下这些函数,做到熟悉掌握以后写代码的时候就会很快了。

使用python中的pymsql完成如下:表结构数据创建 1. 建立 `users` 表和 `orders` 表。 `users` 表有用户ID、用户名、年龄字段,(id,name,age) `orders` 表有订单ID、订单日期、订单金额,用户id字段。(id,order_date,amount,user_id) 2 两表的id作为主键,`orders` 表用户id为users的外键 3 插入数据 `users` (1, '张三', 18), (2, '李四', 20), (3, '王五', 22), (4, '赵六', 25), (5, '钱七', 28); `orders` (1, '2021-09-01', 500, 1), (2, '2021-09-02', 1000, 2), (3, '2021-09-03', 600, 3), (4, '2021-09-04', 800, 4), (5, '2021-09-05', 1500, 5), (6, '2021-09-06', 1200, 3), (7, '2021-09-07', 2000, 1), (8, '2021-09-08', 300, 2), (9, '2021-09-09', 700, 5), (10, '2021-09-10', 900, 4); 查询语句 1. 查询订单总金额 2. 查询所有用户的平均年龄,并将结果四舍五入保留两位小数。 3. 查询订单总数最多的用户的姓名和订单总数。 4. 查询所有不重复的年龄。 5. 查询订单日期在2021年9月1日至9月4日之间的订单总金额。 6. 查询年龄不大于25岁的用户的订单数量,并按照降序排序。 7. 查询订单总金额排名前3的用户的姓名和订单总金额。 8. 查询订单总金额最大的用户的姓名和订单总金额。 9. 查询订单总金额最小的用户的姓名和订单总金额。 10. 查询所有名字中含有“李”的用户,按照名字升序排序。 11. 查询所有年龄大于20岁的用户,按照年龄降序排序,并只显示前5条记录。 12. 查询每个用户的订单数量和订单总金额,并按照总金额降序排序。
06-03
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值