[譯]CSS邊框實現“無圖化”設計
阿新 • • 發佈:2022-05-02
- 翻譯:YingJoy
- 網址: https://www.yingjoy.cn/
- 來源: https://github.com/rougier/numpy-100
- 全文: https://github.com/yingzk/100_numpy_exercises
接上文: 100個Numpy練習【1】
Numpy是Python做資料分析必須掌握的基礎庫之一,非常適合剛學習完Numpy基礎的同學,完成以下習題可以幫助你更好的掌握這個基礎庫。
Python版本:Python 3.6.2
Numpy版本:Numpy 1.13.1
21. 用tile函式建立一個8×8的棋盤矩陣(★☆☆)
(提示: np.tile)
Z = np.tile(np.array([[1, 0], [0, 1]]), (4, 4)) print (Z)
22. 對5×5的隨機矩陣進行歸一化 (★☆☆)
(提示: (x – min) / (max – min))
Z = np.random.random((5, 5))
Zmax, Zmin = Z.max(), Z.min()
Z = (Z-Zmin)/(Zmax-Zmin)
print (Z)
23. 建立一個dtype來表示顏色(RGBA) (★☆☆)
(提示: np.dtype)
color = np.dtype([("r", np.ubyte, 1), ("g", np.ubyte, 1), ("b", np.ubyte, 1), ("a", np.ubyte, 1)]) c = np.array((255, 255, 255, 1), dtype=color) print (c) Out[80]: array((255, 255, 255, 1), dtype=[('r', 'u1'), ('g', 'u1'), ('b', 'u1'), ('a', 'u1')])
24. 一個5×3的矩陣和一個3×2的矩陣相乘,結果是什麼?(★☆☆)
(提示: np.dot | @)
Z = np.dot(np.zeros((5, 3)), np.zeros((3, 2)))
# 或者
Z = np.zeros((5, 3))@ np.zeros((3, 2))
print (Z)
25. 給定一個一維陣列把它索引從3到8的元素進行取反 (★☆☆)
(提示: >, <=)
Z = np.arange(11)
Z[(3 <= Z) & (Z < 8)] *= -1
print (Z)
26. 下面的指令碼的結果是什麼? (★☆☆)
(提示: np.sum)
# Author: Jake VanderPlas # 結果
print(sum(range(5),-1)) 9
from numpy import *
print(sum(range(5),-1)) 10 #numpy.sum(a, axis=None)
27. 關於整形的向量Z下面哪些表示式正確? (★☆☆)
Z**Z True
2 << Z >> 2 False
Z <- Z True
1j*Z True #複數
Z/1/1 True
Z<Z>Z False
28. 下面表示式的結果分別是什麼? (★☆☆)
np.array(0) / np.array(0) nan
np.array(0) // np.array(0) 0
np.array([np.nan]).astype(int).astype(float) -2.14748365e+09
29. 如何從零位開始舍入浮點陣列? (★☆☆)
(提示: np.uniform, np.copysign, np.ceil, np.abs)
# Author: Charles R Harris
Z = np.random.uniform(-10,+10,10)
print (np.copysign(np.ceil(np.abs(Z)), Z))
30. 如何找出兩個陣列公共的元素? (★☆☆)
(提示: np.intersect1d)
Z1 = np.random.randint(0, 10, 10)
Z2 = np.random.randint(0, 10, 10)
print (np.intersect1d(Z1, Z2))
31. 如何忽略numpy的警告資訊(不推薦)? (★☆☆)
(提示: np.seterr, np.errstate)
# Suicide mode on
defaults = np.seterr(all="ignore")
Z = np.ones(1) / 0
# Back to sanity
_ = np.seterr(**defaults)
# 另一個等價的方式, 使用上下文管理器(context manager)
with np.errstate(divide='ignore'):
Z = np.ones(1) / 0
32. 下面的表示式是否為真? (★☆☆)
(提示: 虛數)
np.sqrt(-1) == np.emath.sqrt(-1) Faslse
33. 如何獲得昨天,今天和明天的日期? (★☆☆)
(提示: np.datetime64, np.timedelta64)
yesterday = np.datetime64('today', 'D') - np.timedelta64(1, 'D')
today = np.datetime64('today', 'D')
tomorrow = np.datetime64('today', 'D') + np.timedelta64(1, 'D')
34. 怎麼獲得所有與2016年7月的所有日期? (★★☆)
(提示: np.arange(dtype=datetime64[’D’]))
Z = np.arange('2016-07', '2016-08', dtype='datetime64[D]')
print (Z)
35. 如何計算 ((A+B)*(-A/2)) (不使用中間變數)? (★★☆)
(提示: np.add(out=), np.negative(out=), np.multiply(out=), np.divide(out=))
A = np.ones(3) * 1
B = np.ones(3) * 1
C = np.ones(3) * 1
np.add(A, B, out=B)
np.divide(A, 2, out=A)
np.negative(A, out=A)
np.multiply(A, B, out=A)
36. 用5種不同的方法提取隨機陣列中的整數部分 (★★☆)
(提示: %, np.floor, np.ceil, astype, np.trunc)
Z = np.random.uniform(0, 10, 10)
print (Z - Z % 1)
print (np.floor(Z))
print (np.cell(Z)-1)
print (Z.astype(int))
print (np.trunc(Z))
37. 建立一個5×5的矩陣且每一行的值範圍為從0到4 (★★☆)
(提示: np.arange)
Z = np.zeros((5, 5))
Z += np.arange(5)
print (Z)
38. 如何用一個生成10個整數的函式來構建陣列 (★☆☆)
(提示: np.fromiter)
def generate():
for x in range(10):
yield x
Z = np.fromiter(generate(), dtype=float, count=-1)
print (Z)
39. 建立一個大小為10的向量, 值域為0到1,不包括0和1 (★★☆)
(提示: np.linspace)
Z = np.linspace(0, 1, 12, endpoint=True)[1: -1]
print (Z)
40. 建立一個大小為10的隨機向量,並把它排序 (★★☆)
(提示: sort)
Z = np.random.random(10)
Z.sort()
print (Z)