1. 程式人生 > >numpy 數據處理

numpy 數據處理

pre style range false map print 多條件 where pyplot

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 數據處理