前言
NumPy系統(tǒng)是Python的一種開源的數(shù)值計算擴展,它也是是Python數(shù)據(jù)分析必不可少的第三方庫。近日,國外博主Selva Prabhakaran制作了101道真題,為熟悉/不熟悉NumPy的“后備數(shù)據(jù)科學家”們提供了一個檢測自己水平的機會,你不想來挑戰(zhàn)一下嗎?本文中的NumPy真題旨在提供一個參考,讀者可以借此測試自己數(shù)據(jù)分析技巧的掌握水平。
1.導(dǎo)入NumPy并查看版本
難度:L1
01
導(dǎo)入NumPy并將它并名為np,輸出版本信息。
點擊空白處查看答案
import numpy as np
print(np.__version__)
#> 1.13.3
無論你要做什么,你必須在其他代碼前先輸入import numpy as np,這之后它才能正常工作。如果還沒有安裝,你可以去anaconda下載。
2.如何創(chuàng)建一維數(shù)組?
難度:L1
02
創(chuàng)建一個包含數(shù)字0-9的一維數(shù)組:#> 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.如何創(chuàng)建布爾型數(shù)組?
難度:L1
03
創(chuàng)建一個3×3的,所有填充為True的數(shù)組。
點擊空白處查看答案
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.如何從一維數(shù)組中索引符合條件的元素?
難度:L1
04
從輸入arr中篩選出所有奇數(shù)。
輸入:
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.如何用另一個值替換數(shù)組中符合條件的元素?
難度:L1
05
用-1替換輸入arr中的所有奇數(shù)。
輸入:
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.如何在確保輸入數(shù)組不變的同時替換數(shù)組中符合條件的元素?
難度:L2
06
用-1替換輸入arr中的所有奇數(shù),但不能改變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.如何重組數(shù)組?
難度:L1
07
將一維數(shù)組轉(zhuǎn)換為有2行的二維數(shù)組。
輸入:
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.如何垂直合并兩個數(shù)組?
難度:L2
08
將數(shù)組a和數(shù)組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.如何水平合并兩個數(shù)組?
難度:L2
09
將數(shù)組a和數(shù)組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里生成自定義數(shù)組?
難度:L2
10
在沒有hardcode的情況下,用數(shù)組a和NumPy函數(shù)輸出以下目標數(shù)組。
輸入:
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])
-
數(shù)據(jù)分析
+關(guān)注
關(guān)注
2文章
1457瀏覽量
34092 -
python
+關(guān)注
關(guān)注
56文章
4802瀏覽量
84885
原文標題:真題演練(一):數(shù)據(jù)分析必備的NumPy技巧(Python)
文章出處:【微信號:jqr_AI,微信公眾號:論智】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論