NumPy进阶修炼80题|41-60
大家好,又到了NumPy进阶修炼专题,其实已经断更很久了,那么在本文正式发布题目之前,先说下改动的地方,在以前的Pandas120题和NumPy热身20题中,我都是将我的答案附在每一题的后面?
这种形式的题目对于读者来说,尤其是新手朋友们,很容易被我的思路带进去,实际上不论我的pandas还是numpy的习题,每一题都有多种解法,并且我的解法有时也并不是最佳方法,所以为了让大家多一点自己思考的时间,在numpy以及后面的其他系列习题中,我将换一种方式整理习题?
就像上图一样,我将同时发布两个Notebook版本习题,一份习题单独版,一份带有我的答案的单独版本,大家可以先试着在只有习题的版本中思考,写代码,并与我的答案对比,也欢迎给我提交不一样的答案!
好了,废话不多说,我们来看今天的20题,主要将涉及到用NumPy对矩阵的一些操作!
41
数据创建
题目:生成6行6列的二维数组,值为1-100随机数
难度:⭐
答案
data = np.random.randint(1,100, [6,6])
42
数据查找
题目:找到每列的最大值
难度:⭐⭐
答案
np.amax(data, axis=0)
43
数据查找
题目:找到每行的最小值
难度:⭐⭐
答案
np.amin(data, axis=1)
44
数据计算
题目:计算data每个元素的出现次数
难度:⭐⭐
答案
np.unique(data,return_counts=True)
45
数据计算
题目:计算data每行元素大小排名
难度:⭐⭐
答案
data.argsort()
46
数据处理
题目:将data按行重复一次
难度:⭐⭐
答案
np.repeat(data, 2, axis=0)
47
数据处理
题目:去除data的重复行
难度:⭐⭐
答案
np.unique(data,axis = 0)
48
数据抽样
题目:从data的第一行中不放回抽3个元素
难度:⭐⭐
答案
np.random.choice(data[0:1][0], 3, replace=False)
49
数据计算
题目:计算data第二行中不含第三行的元素的元素
难度:⭐⭐
答案
a = data[1:2]
b = data[2:3]
index=np.isin(a,b)
array=a[~index]
array
50
数据计算
题目:判断data是否有空行
难度:⭐⭐
答案
(~data.any(axis=1)).any()
51
数据排序
题目:将data的每行升序排列
难度:⭐⭐
答案
data.sort(axis = 1)
52
数据转换
题目:将data的数据格式转换为float
难度:⭐⭐
答案
data1 = data.astype(float)
思考:为什么不能在data本身转换
53
数据修改
题目:将data1小于5的元素修改为nan
难度:⭐⭐
答案
data1[data1 < 5] = np.nan
54
数据处理
题目:删除data1含有空值的行
难度:⭐⭐
答案
data1 = data1[~np.isnan(data1).any(axis=1), :]
55
数据计算
题目:计算data1第一行出现频率最高的值
难度:⭐⭐⭐
答案
vals, counts = np.unique(data1[0,:], return_counts=True)
print(vals[np.argmax(counts)])
56
数据计算
题目:计算data1中与100最接近的元素
难度:⭐⭐⭐
答案
a = 100
data1.flat[np.abs(data1 - a).argmin()]
57
数据计算
题目:计算data1每一行的元素减去每一行的平均值
难度:⭐⭐
答案
data1 - data1.mean(axis=1, keepdims=True)
58
数据计算
题目:将data1归一化至区间[0,1]
难度:⭐⭐
答案
a = np.max(data1) - np.min(data1)
(data1 - np.min(data1)) / a
59
数据计算
题目:将data1标准化
难度:⭐⭐⭐
答案
mu = np.mean(data1, axis=0)
sigma = np.std(data1, axis=0)
(data1 - mu) / sigma
60
数据存储
题目:将data1存储至本地
难度:⭐
答案
np.savetxt('test.txt',data1)
以上就是本期20题的全部内容,欢迎思考与我不同的解法,你可以在早起Python后台回复numpy来获取Notebook的两种版本习题来练习,其实NumPy中的操作没有Pandas中的多变,所以全部大概在80题左右,本周会更新完毕,如果你也喜欢这种形式的习题可以给我点个在看,我们下期见。
- 微信的两种用途
- Sqlite快速上手使用指南
- 自动类型安全的.NET标准REST库refit
- 实现WebSocket和WAMP协议的开源库WampSharp
- Centos下部署DRBD+NFS+Keepalived高可用环境记录
- jQuery方法position()与offset()区别
- 温故而知新:设计模式之桥接模式(Bridge)
- 温故而知新:设计模式之装饰模式(Decorator)
- 域名“宝贝”baby.cn以71万元价格结拍
- 温故而知新:设计模式之组合模式(Composite)
- ruby学习笔记(7)-闭包
- ruby学习笔记(6)-Array的使用
- centos7下部署iptables环境纪录(关闭默认的firewalle)
- ruby学习笔记(5)-模块module的运用
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法