真题演练(一):数据分析必备的NumPy技巧(Python)

2018 年 3 月 3 日 论智 Bot
来源:Machine Learning Plus
编译:Bot

编者按:NumPy系统是Python的一种开源的数值计算扩展,它也是是Python数据分析必不可少的第三方库。近日,国外博主Selva Prabhakaran制作了101道真题,为熟悉/不熟悉NumPy的“后备数据科学家”们提供了一个检测自己水平的机会,你不想来挑战一下吗?

本文中的NumPy真题旨在提供一个参考,读者可以借此测试自己数据分析技巧的掌握水平。题目难度由易到难分为L1—L4四等,在做题前,如果你想快速复习一下NumPy知识,以下是两个可以参考的选项:

  • NumPy基础教程(英语)

  • NumPy进阶教程(英语)

1.导入NumPy并查看版本


难度:L1

01

导入NumPy并将它并名为np,输出版本信息。

点击空白处查看答案

import numpy as np

print(np.__version__)

#> 1.13.3

无论你要做什么,你必须在其他代码前先输入import numpy as np,这之后它才能正常工作。如果还没有安装,你可以去anaconda下载。

2.如何创建一维数组?

难度:L1

02

创建一个包含数字0-9的一维数组:#> array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])。

点击空白处查看答案

arr = np.arange(10)

arr

#> array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

3.如何创建布尔型数组?

难度:L1

03

创建一个3×3的,所有填充为True的数组。

点击空白处查看答案

np.full((3, 3), True, dtype=bool)

#> array([[ True,  True,  True],

#>        [ True,  True,  True],

#>        [ True,  True,  True]], dtype=bool)

# Alternate method:

np.ones((3,3), dtype=bool)


4.如何从一维数组中索引符合条件的元素?

难度:L1

04

从输入arr中筛选出所有奇数。

输入:

arr = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])`

期望的输出:

#> array([1, 3, 5, 7, 9])

点击空白处查看答案

# Input

arr = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

# Solution

arr[arr % 2 == 1]

#> array([1, 3, 5, 7, 9])


5.如何用另一个值替换数组中符合条件的元素?

难度:L1

05

用-1替换输入arr中的所有奇数。

输入:

arr = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

期望的输出:

#> array([ 0, -1,  2, -1,  4, -1,  6, -1,  8, -1])

点击空白处查看答案

arr[arr % 2 == 1] = -1

arr

#> array([ 0, -1,  2, -1,  4, -1,  6, -1,  8, -1])

6.如何在确保输入数组不变的同时替换数组中符合条件的元素?


难度:L2

06

用-1替换输入arr中的所有奇数,但不能改变arr。

输入:

arr = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

期望的输出:

out#> array([ 0, -1,  2, -1,  4, -1,  6, -1,  8, -1])arr#> array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

点击空白处查看答案

arr = np.arange(10)

out = np.where(arr % 2 == 1, -1, arr)

print(arr)

out

#> [0 1 2 3 4 5 6 7 8 9]

array([ 0, -1,  2, -1,  4, -1,  6, -1,  8, -1])

7.如何重组数组?

难度:L1

07

将一维数组转换为有2行的二维数组。

输入:

np.arange(10)#> array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

期望的输出:

#> array([[0, 1, 2, 3, 4],#>        [5, 6, 7, 8, 9]])

点击空白处查看答案

arr = np.arange(10)

arr.reshape(2, -1)  # Setting to -1 automatically decides the number of cols

#> array([[0, 1, 2, 3, 4],

#>        [5, 6, 7, 8, 9]])

8.如何垂直合并两个数组?

难度:L2

08

将数组a和数组b垂直合并。

输入:

a = np.arange(10).reshape(2,-1)b = np.repeat(1, 10).reshape(2,-1)

期望的输出:

#> array([[0, 1, 2, 3, 4],

#>        [5, 6, 7, 8, 9],

#>        [1, 1, 1, 1, 1],

#>        [1, 1, 1, 1, 1]])

点击空白处查看答案

a = np.arange(10).reshape(2,-1)

b = np.repeat(1, 10).reshape(2,-1)

# Answers

# Method 1:

np.concatenate([a, b], axis=0)

# Method 2:

np.vstack([a, b])

# Method 3:

np.r_[a, b]

#> array([[0, 1, 2, 3, 4],

#>        [5, 6, 7, 8, 9],

#>        [1, 1, 1, 1, 1],

#>        [1, 1, 1, 1, 1]])

9.如何水平合并两个数组?

难度:L2

09

将数组a和数组b水平合并。

输入:

a = np.arange(10).reshape(2,-1)b = np.repeat(1, 10).reshape(2,-1)

期望的输出:

#> array([[0, 1, 2, 3, 4, 1, 1, 1, 1, 1],#>        [5, 6, 7, 8, 9, 1, 1, 1, 1, 1]])


点击空白处查看答案


a = np.arange(10).reshape(2,-1)

b = np.repeat(1, 10).reshape(2,-1)

# Answers

# Method 1:

np.concatenate([a, b], axis=1)

# Method 2:

np.hstack([a, b])

# Method 3:

np.c_[a, b]

#> array([[0, 1, 2, 3, 4, 1, 1, 1, 1, 1],

#>        [5, 6, 7, 8, 9, 1, 1, 1, 1, 1]])

10.如何在没有hardcode的情况下在NumPy里生成自定义数组?

难度:L2

10

在没有hardcode的情况下,用数组a和NumPy函数输出以下目标数组。

输入:

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

期望的输出:

#> array([1, 1, 1, 2, 2, 2, 3, 3, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3])

点击空白处查看答案

np.r_[np.repeat(a, 3), np.tile(a, 3)]

#> array([1, 1, 1, 2, 2, 2, 3, 3, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3])

原文地址:www.machinelearningplus.com/101-numpy-exercises-python/

登录查看更多
0

相关内容

数据分析是指用适当的统计方法对收集来的大量第一手资料和第二手资料进行分析,以求最大化地开发数据资料的功能,发挥数据的作用。
【2020新书】从Excel中学习数据挖掘,223页pdf
专知会员服务
90+阅读 · 2020年6月28日
还在修改博士论文?这份《博士论文写作技巧》为你指南
专知会员服务
172+阅读 · 2020年6月4日
干净的数据:数据清洗入门与实践,204页pdf
专知会员服务
161+阅读 · 2020年5月14日
【经典书】Python数据数据分析第二版,541页pdf
专知会员服务
193+阅读 · 2020年3月12日
BAT机器学习面试题1000题(376~380题)
七月在线实验室
9+阅读 · 2018年8月27日
实战 | 用Python做图像处理(三)
七月在线实验室
15+阅读 · 2018年5月29日
实战 | 用Python做图像处理(二)
七月在线实验室
17+阅读 · 2018年5月25日
Python3爬虫之入门和正则表达式
全球人工智能
7+阅读 · 2017年10月9日
学员笔记||Python数据分析之:numpy入门(一)
七月在线实验室
7+阅读 · 2017年9月28日
python pandas 数据处理
Python技术博文
4+阅读 · 2017年8月30日
Few Shot Learning with Simplex
Arxiv
5+阅读 · 2018年7月27日
W-net: Bridged U-net for 2D Medical Image Segmentation
Arxiv
19+阅读 · 2018年7月12日
VIP会员
相关VIP内容
【2020新书】从Excel中学习数据挖掘,223页pdf
专知会员服务
90+阅读 · 2020年6月28日
还在修改博士论文?这份《博士论文写作技巧》为你指南
专知会员服务
172+阅读 · 2020年6月4日
干净的数据:数据清洗入门与实践,204页pdf
专知会员服务
161+阅读 · 2020年5月14日
【经典书】Python数据数据分析第二版,541页pdf
专知会员服务
193+阅读 · 2020年3月12日
相关资讯
BAT机器学习面试题1000题(376~380题)
七月在线实验室
9+阅读 · 2018年8月27日
实战 | 用Python做图像处理(三)
七月在线实验室
15+阅读 · 2018年5月29日
实战 | 用Python做图像处理(二)
七月在线实验室
17+阅读 · 2018年5月25日
Python3爬虫之入门和正则表达式
全球人工智能
7+阅读 · 2017年10月9日
学员笔记||Python数据分析之:numpy入门(一)
七月在线实验室
7+阅读 · 2017年9月28日
python pandas 数据处理
Python技术博文
4+阅读 · 2017年8月30日
Top
微信扫码咨询专知VIP会员