numpy的基本操作
來自專欄代碼雜貨鋪
import numpy as npa = np.arange(1, 16).reshape(3, 5)b = np.linspace(1, 15, 15, dtype=int).reshape(5,3)# 矩陣乘法print(np.dot(a, b))# 自身加和print(a.sum())# 列向加和print(np.sum(a, axis=0))# 行向累計加和print(np.cumsum(a, axis=1)) # [[ 1 3 6 10 15][ 6 13 21 30 40][11 23 36 50 65]]# 最大值索引print(np.argmax(a))# 最大值位置print(np.unravel_index(np.argmax(a), a.shape))# 兩數組中對應元素取最大值,有廣播機制print(np.maximum([2,3,4],[1,5,2]))# 計算每個元素出現次數print(np.bincount(np.arange(5)))# unique去重print(np.unique(np.array([a, a, b, c])))# unique去重 得到兩個行向量print(np.unique(np.array([[1,0,0],[1,0,0],[2,3,4]]), axis=0))# 對數組裁剪,小於1的賦值1 大於7的賦值7c = np.arange(10)print(np.clip(c, 1, 7))# 返回元素共軛x = a + 1j*np.ones(a.shape)print(np.conjugate(x))# a和d的相關係數d = np.linspace(1, 15, 15).reshape(a.shape)print(np.corrcoef(a, d))# x和y的叉積x = [1, 2, 3]y = [4, 5, 6]print(np.cross(x, y))# 做數組元素的乘積,可以加axisprint(np.prod([[1,2],[3,4]]))# x中的元素是否在value中x = np.arange(9).reshape(3,3)value = [3,4,7]ix = np.isin(x, value) # 返回的True False矩陣pos = np.where(ix)print(ix, pos)# [[False False False]# [ True True False]# [False True False]] (array([1, 1, 2]), array([0, 1, 1]))# 第一個array表示x, 第二個表示y# 一維向量->增加一個軸x = np.linspace(1, 9, 9)print(x[np.newaxis].shape, x[:,np.newaxis].shape)# 增廣a = np.floor(10*np.random.random((2,2)))b = np.floor(10*np.random.random((2,2)))print(np.vstack((a,b)), np.hstack((a, b)), np.concatenate((a,b.T), axis=1))# 拆分 將a水平分為3份a = np.floor(np.random.random((2,12)))print(np.hsplit(a, 3))# 索引出a中第1,2,4個元素a = np.array([1,2,3,4,6])print(np.take(a, [1,2,4]))# 自定義函數def myfunc(a, b): if a>b: return a-b else: return a+bvfunc = np.vectorize(myfunc)print(vfunc([1,2,3,4], 2))import matplotlib.pyplot as pltmu, sigma = 0, 1v = np.random.normal(mu, sigma, 1000)plt.hist(v, bins=50, normed=1)plt.show()
推薦閱讀: