来源 | 早起Python(ID: zaoqi-python)

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

数据查找

问:如何获得两个数组之间的相同元素

输入

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)

数据修改

问:如何从一个数组中删除另一个数组存在的元素

输入

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)

数据修改

问:如何修改一个数组为只读模式

输入:

arr1 = np.random.randint(1,10,10)

答案:

arr1 = np.random.randint(1,10,10)
arr1.flags.writeable = False

数据转换

问:如何将list转为numpy数组

输入:

a = [1,2,3,4,5]

答案:

a = [1,2,3,4,5]
np.array(a)

数据转换

问:如何将pd.DataFrame转为numpy数组

输入:

df = pd.DataFrame({'A':[1,2,3],'B':[4,5,6],'C':[7,8,9]})

答案:

df.values

数据分析

问:如何使用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))

数据抽样

问:如何使用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])

答案:

数据创建

问:如何为数据创建副本

输入:

arr = np.array([1,2,3,4,5])

答案:

#对副本数据进行修改,不会影响到原始数据
arr = np.array([1,2,3,4,5])
arr1 = arr.copy()

数据切片

问:如何对数组进行切片

输入:

arr = np.arange(10)

备注从索引2开始到索引8停止,间隔为2

答案:

arr = np.arange(10)
a = slice(2,8,2)
arr[a] #等价于arr[2:8:2]

字符串操作

问:如何使用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))

数据修改

问:如何对数据向上/下取整

输入:

arr = np.random.uniform(0,10,10)

答案:

arr = np.random.uniform(0,10,10)
print(arr)
###向上取整
print(np.ceil(arr))
###向下取整
print(np.floor(arr) )

格式修改

问:如何取消默认科学计数显示数据

答案:

np.set_printoptions(suppress=True)

数据修改

问:如何使用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, :])

数据查找

问:如何使用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))

数据计算

问:如何使用numpy求余数

输入:

a = 10
b = 3

答案:

np.mod(a,b)

数据计算

问:如何使用NumPy进行矩阵SVD分解

输入:

A = np.random.randint(1,10,[3,3])

答案:

np.linalg.svd(A)

数据筛选

问:如何使用NumPy多条件筛选数据

输入:

arr = np.random.randint(1,20,10)

答案:

arr = np.random.randint(1,20,10)
print(arr[(arr>1)&(arr<7)&(arr%2==0)])

数据修改

问:如何使用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], [-1, 1]))

数据修改

问:如何使用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))

数据计算

问:如何使用numpy求解线性方程组

输入:

A = np.array([[1, 2, 3], [2, -1, 1], [3, 0, -1]])
b = np.array([9, 8, 3])

备注:求解Ax=b

答案:

A = np.array([[1, 2, 3], [2, -1, 1], [3, 0, -1]])
b = np.array([9, 8, 3])
x = np.linalg.solve(A, b)
print(x)

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

更多精彩推荐
☞机器学习算法易受攻击?阿里“安全基建”这样应对AI的不安全
☞代码恒久远,GitHub 永流传
☞腾讯员工每天在岗不足 8 小时被辞?背后原因可能不止你看到的这些
☞5G:新基建的压舱石,如何为新基建按下“加速键”?
☞中国人工智能市场破 50 亿!你还不了解 AI 云服务吗?
☞员工导致Twitter陷入史诗级加密黑客风暴?官方回应来了
点分享点点赞点在看

NumPy学的还不错?来试试这20题相关推荐

  1. 大龄程序猿的新出路:改行学中医!40岁程序员,重新高考学中医,如今混得还不错!...

    大龄程序员的出路在哪里?送快递,送外卖,跑滴滴? 一位网友给出了一条新出路:改行学中医. 他说,一个40岁的程序员重新参加高考,学中医,如今已经学成归来,混得还不错. 程序员本身就有学习能力,改行中医 ...

  2. python 把numpy.ndarray转为图像_Python 让蔡徐坤在我的命令行里打篮球?打得还不错...

    这是恋习Python推荐的第83篇好文 作者:顾个城管打天下 作者自称是一个经常逛 B 站的肥宅.最近 B 站上流行的视频素材除了"换脸",其次就要属"蔡xx打球&quo ...

  3. 三十岁了学python还可以吗-三十岁了还可以学编程吗?只要你想,只要你做,什么时候都不晚...

    文章有点长,希望你可以看完.如果能给迷茫的朋友一点勇气,我不胜荣幸. 做一件事最好的时间是十年前,其次是现在. 如果想学编程却苦于不知道从何开始,也没有系统的学习路径,那就来加入我们一起学习 在这里不 ...

  4. 程序员在互联网公司年薪20万,考上公务员收入曝光,网友:还不错

    赵凡是一个程序员,当初高中毕业之后因为没有考上心仪的大学,但是自己又不想复读,于是就去专门学习了计算机.之后跟着老师到了上海发展找工作,上海作为国际性的城市,虽然工作岗位多,但是要求也很高. **[P ...

  5. 量化投资之定投,无脑却收益还不错,记得周三来

    目标: 本系列开始重点研究量化,逐步改善模型,改善策略,然后评估各个策略的优劣. 本文是第一篇,也是最容易最无脑投资的一篇,每周三定投,收益还不错. 内容: 如果工作太忙没法投资,闲钱无处放,不妨看看 ...

  6. 还不错的Table样式和form表单样式

    作为一个后台开发人员而言,拥有一套属于自己的前台样式是比较重要的,这里分享一下自己感觉还不错的样式,以后遇到好的,还会陆续添加 上图: 带鼠标滑动效果的table样式看起来比较清爽 样式 <he ...

  7. 这个网盘搜索好像还不错

    这个网盘搜索好像还不错 http://www.baiduyunpan.com/file/26474214.html 转载于:https://www.cnblogs.com/tujia/p/764964 ...

  8. html2张图片垂直居中,任意图片实现垂直居中的三种方法(兼容性还不错)

    在网站开发过程中,可能会有希望图片垂直居中的情况,而且,需要垂直居中的图片的高度也不确定,这就会给页面的布局带来一定的挑战.我总结了一下,曾经使用过的几种方法来使图片垂直居中,除了第一种方法只限于标准 ...

  9. 把QQ群共享当做网盘用感觉还不错

    作者:iamlaosong 网上看到有人把QQ群的共享文件区当网盘用,试了一下,感觉还不错. 以前我是用QQ邮箱中的文件中转站当网盘使用的,准确的来说是当U盘使用.QQ邮箱中的记事本则用来记录一些备忘 ...

最新文章

  1. android中获取某段程序的执行时间
  2. C语言求二叉树的垂直总和(附完整源码)
  3. Python selenium对js元素进行增删改查操作
  4. ANN:DNN结构演进History—LSTM_NN
  5. Redis的Linux单机版安装
  6. hadoop编译java,Hadoop源码编译(2.4.1)
  7. sign check fail: check Sign and Data Fail解决方案
  8. 11、Libgdx的音频
  9. 淮阴工学院计算机专业的考研率,淮阴工学院江淮学院(淮阴工学院考研录取率)...
  10. A10负载均衡设备基础配置
  11. HoloLens 2开发:Pcx 渲染点云单眼显示问题
  12. OpenCV Error: Unsupported format or combination of formats (Unsupported combination of input and out
  13. 打造最快的Hash表
  14. MySQL复制以及调优
  15. 下载速度15MB/s?网友实测度盘的这个新版本后惊了!
  16. 在windows 2008下面使用dynamipsgui
  17. Python实现类似局域网QQ群聊
  18. 常用颜色RGB、灰度值、取色值、透明度。
  19. java tld_Java Web自定义标签tld文件的简单使用
  20. 中秋节后如何有面子的带女票回家?

热门文章

  1. halcon算子翻译——set_framegrabber_callback
  2. Eclispse Che(2):启动Che服务,进入IDE界面
  3. openNebulafrontEnd ComputeNode 配置记录
  4. 在 Django 的 View 中利用 function decorator 可实现一定程度的代码重用
  5. 常用分类算法的优缺点
  6. 暑期集训3:几何基础 练习题H: POJ - 2456
  7. 2018-3-24论文(Grey Wolf Optimizer)note1----------No Free Lunch Theorem
  8. SQL中内连接、外连接、交叉连接
  9. 执子之手,与子偕老。你同意么?
  10. Spring Cloud 微服务实战笔记