numpy 數據處理
阿新 • • 發佈:2018-08-23
pre style range false map print 多條件 where pyplot meshgrid 傳入兩個一維數組,返回第一個二維數組用第一個傳入的一維數組為行,第二個傳入的一維數組為列
np.meshgrid()
meshgrid 傳入兩個一維數組,返回第一個二維數組用第一個傳入的一維數組為行,第二個傳入的一維數組為列
返回的第二個數組是以第二個傳入的一維數組為行,第一個一維數組為列
import numpy as np import matplotlib.pyplot as plt import pylab points = np.arange(-5,5,0.01) #meshgrid 傳入兩個一維數組,返回第一個二維數組用第一個傳入的一維數組為行,第二個傳入的一維數組為列 #返回的第二個數組是以第二個傳入的一維數組為行,第一個一維數組為列 xs,ys = np.meshgrid(points,points)print(xs == ys.T) #True z = np.sqrt(ys**2 + xs**2) plt.imshow(z,cmap= plt.cm.gray) plt.colorbar() pylab.show()
篩選
真值表
#真值表 import numpy as np import numpy.random as np_random x_arr = np.array([1.1, 1.2, 1.3, 1.4, 1.5]) y_arr = np.array([2.1, 2.2, 2.3, 2.4, 2.5]) cond = np.array([True, False, True, True, False]) result= [(x if c else y) for x, y, c in zip(x_arr, y_arr, cond)] # 通過列表推到實現 print(result)
where:掩碼if篩選
#若where的第2、3個參數不是數組,則第2、3個參數將通過掩碼組成掩碼形狀相同的數組 np.where(cond,x_arr,y_arr) arr = np_random.randn(4,4) print(arr) print(np.where(arr>0,2,-2)) #where多條件 cond_1 = np.array([True, False, True, True, False]) cond_2= np.array([False, True, False, True, False]) # 傳統代碼如下 result = [] for i in range(len(cond)): if cond_1[i] and cond_2[i]: result.append(0) elif cond_1[i]: result.append(1) elif cond_2[i]: result.append(2) else: result.append(3) print(result) result = np.where(cond_1 & cond_2, 0, np.where(cond_1, 1, np.where(cond_2, 2, 3)))
numpy 數據處理