电子说
NumPy系统是Python的一种开源的数值计算扩展,它也是是Python数据分析必不可少的第三方库。近日,国外博主Selva Prabhakaran制作了101道真题,为熟悉/不熟悉NumPy的“后备数据科学家”们提供了一个检测自己水平的机会,你不想来挑战一下吗?本文中的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])
全部0条评论
快来发表一下你的评论吧 !