NumPy学的还不错?来试试这20题!

Python爬虫与数据挖掘

共 2962字,需浏览 6分钟

 ·

2020-09-01 13:33

点击上方“Python爬虫与数据挖掘”,进行关注

回复“书籍”即可获赠Python从入门到进阶共10本电子书

巧啭岂能无本意?良辰未必有佳期。
大家好,又到了NumPy进阶修炼专题。

NumPy大家应该不陌生了,看了太多的原理讲解之后,用刷题来学习是最有效的方法,本文将带来20个NumPy经典问题,附赠20段实用代码,拿走就用,建议打开Jupyter Notebook边敲边看!


01


数据查找


问:如何获得两个数组之间的相同元素
输入
import numpy as np
import pandas as pd
import warnings
warnings.filterwarnings("ignore")
arr1 = np.random.randint(10,6,6)
arr2 = np.random.randint(10,6,6)
答案
arr1 = np.random.randint(10,6,6)
arr2 = np.random.randint(10,6,6)
print("arr1: %s"%arr1)
print("arr2: %s"%arr2)
np.intersect1d(arr1,arr2)


02


数据修改


问:如何从一个数组中删除另一个数组存在的元素
输入
arr1 = np.random.randint(10,6,6)
arr2 = np.random.randint(10,6,6)
答案:
arr1 = np.random.randint(1,10,10)
arr2 = np.random.randint(1,10,10)
print("arr1: %s"%arr1)
print("arr2: %s"%arr2)
np.setdiff1d(arr1,arr2)


03


数据修改


问:如何修改一个数组为只读模式
输入:
arr1 = np.random.randint(1,10,10)
答案:
arr1 = np.random.randint(1,10,10)
arr1.flags.writeable = False


04


数据转换


问:如何将list转为numpy数组
输入:
a = [1,2,3,4,5]
答案:
a = [1,2,3,4,5]
np.array(a)


05


数据转换


问:如何将pd.DataFrame转为numpy数组
输入:
df = pd.DataFrame({'A':[1,2,3],'B':[4,5,6],'C':[7,8,9]})
答案:
df.values


06


数据分析


问:如何使用numpy进行描述性统计分析
输入:
arr1 = np.random.randint(1,10,10)
arr2 = np.random.randint(1,10,10)
答案:
arr1 = np.random.randint(1,10,10)
arr2 = np.random.randint(1,10,10)

print("arr1的平均数为:%s" %np.mean(arr1))
print("arr1的中位数为:%s" %np.median(arr1))
print("arr1的方差为:%s" %np.var(arr1))
print("arr1的标准差为:%s" %np.std(arr1))
print("arr1,arr的相关性矩阵为:%s" %np.cov(arr1,arr2))
print("arr1,arr的协方差矩阵为:%s" %np.corrcoef(arr1,arr2))


07


数据抽样


问:如何使用numpy进行概率抽样
arr = np.array([1,2,3,4,5])
输入:
arr = np.array([1,2,3,4,5])
np.random.choice(arr,10,p = [0.1,0.1,0.1,0.1,0.6])
答案:


08


数据创建


问:如何为数据创建副本
输入:
arr = np.array([1,2,3,4,5])
答案:
#对副本数据进行修改,不会影响到原始数据
arr = np.array([1,2,3,4,5])
arr1 = arr.copy()

09


数据切片


问:如何对数组进行切片
输入:
arr = np.arange(10)
备注从索引2开始到索引8停止,间隔为2
答案:
arr = np.arange(10)
a = slice(2,8,2)
arr[a] #等价于arr[2:8:2]


10


字符串操作


问:如何使用NumPy操作字符串
输入:
str1 = ['I love']
str2 = [' Python']
答案:
#拼接字符串
str1 = ['I love']
str2 = [' Python']
print(np.char.add(str1,str2))

#大写首字母
str3 = np.char.add(str1,str2)
print(np.char.title(str3))


11


数据修改


问:如何对数据向上/下取整
输入:
arr = np.random.uniform(0,10,10)
答案:
arr = np.random.uniform(0,10,10)
print(arr)
###向上取整
print(np.ceil(arr))
###向下取整
print(np.floor(arr) )


12


格式修改


问:如何取消默认科学计数显示数据
答案:
np.set_printoptions(suppress=True)



13


数据修改


问:如何使用NumPy对二维数组逆序
输入:
arr = np.random.randint(1,10,[3,3])
答案:
arr = np.random.randint(1,10,[3,3])
print(arr)
print('列逆序')
print(arr[:, -1::-1])
print('行逆序')
print(arr[-1::-1, :])


14


数据查找


问:如何使用NumPy根据位置查找元素
输入:
arr1 = np.random.randint(1,10,5)
arr2 = np.random.randint(1,20,10)
备注:在arr2中根据arr1中元素以位置查找
答案:
arr1 = np.random.randint(1,10,5)
arr2 = np.random.randint(1,20,10)
print(arr1)
print(arr2)
print(np.take(arr2,arr1))


15


数据计算


问:如何使用numpy求余数
输入:
a = 10
b = 3
答案:
np.mod(a,b)



16


数据计算


问:如何使用NumPy进行矩阵SVD分解
输入:
A = np.random.randint(1,10,[3,3])
答案:
np.linalg.svd(A)


17


数据筛选


问:如何使用NumPy多条件筛选数据
输入:
arr = np.random.randint(1,20,10)
答案:
arr = np.random.randint(1,20,10)
print(arr[(arr>1)&(arr<7)&(arr%2==0)])



18


数据修改


问:如何使用NumPy对数组分类
备注:将大于等于7,或小于3的元素标记为1,其余为0
输入:
arr = np.random.randint(1,20,10)
答案:
arr = np.random.randint(1,20,10)
print(arr)
print(np.piecewise(arr, [arr < 3, arr >= 7], [-11]))


19


数据修改


问:如何使用NumPy压缩矩阵
备注:从数组的形状中删除单维度条目,即把shape中为1的维度去掉
输入:
arr = np.random.randint(1,10,[3,1])
答案:
arr = np.random.randint(1,10,[3,1])
print(arr)
print(np.squeeze(arr))


20


数据计算


问:如何使用numpy求解线性方程组
输入:
A = np.array([[123], [2-11], [30-1]])
b = np.array([983])
备注:求解Ax=b
答案:
A = np.array([[123], [2-11], [30-1]])
b = np.array([983])
x = np.linalg.solve(A, b)
print(x)



以上就是我总结的NumPy经典20题,你都会吗?并且每题我都只给出了一种解法,而事实上每题都有多种解法,所以你应该思考是否有更好的思路!


------------------- End -------------------

往期精彩文章推荐:

欢迎大家点赞,留言,转发,转载,感谢大家的相伴与支持

想加入Python学习群请在后台回复【入群

万水千山总是情,点个【在看】行不行

/今日留言主题/

随便说一两句吧~~

浏览 18
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报