Numpy 整体复制、按块复制、向量化操作、寻找缺失值、填充缺失值
生活随笔
收集整理的這篇文章主要介紹了
Numpy 整体复制、按块复制、向量化操作、寻找缺失值、填充缺失值
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1. 整體復制和按塊復制
已知數組:
In [17]: a = np.array([1,2,3])In [18]:
返回如下數組:
array([1, 1, 1, 2, 2, 2, 3, 3, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3])
分析:
數組前半部分 1, 1, 1, 2, 2, 2, 3, 3, 3 通過 repeat 函數復制 3 次,后面部分通過 tile 函數復制 3 次,然后合并數據。
In [17]: a = np.array([1,2,3])In [18]: np.hstack((np.repeat(a,3), np.tile(a,3)))
Out[18]: array([1, 1, 1, 2, 2, 2, 3, 3, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3])In [19]:
2. 向量化操作
借助 NumPy 的 vectorize 實現操作向量化。原生的 Python 列表不支持向量化操作,兩個列表相加默認不是逐個元素相加:
In [19]: a = [1,2,3]In [21]: b = [4,5,6]In [22]: a + b
Out[22]: [1, 2, 3, 4, 5, 6]In [23]:
但是,借助 vectorize 能實現矢量相加, addv 函數就能實現兩個數組相加:
In [24]: def add(x, y):...: return x+y...: In [25]: addv = np.vectorize(add)In [26]: addv(a, b)
Out[26]: array([5, 7, 9])In [27]:
3. 填充缺失值
如下數組,含有缺失值,使用 -1 填充:
In [32]: a = np.array([[ 0., np.nan, 2., 3.],...: [ 4., 5., np.nan, 7.],...: [ 8., 9., 10., 11.],...: [12., 13., np.nan, 15.],...: [16., 17., np.nan, 19.],...: [20., 21., 22., 23.]])
一行代碼, np.isnan(a) 逐元素檢查,若為空則為 True ,否則為 False ,得到一個與原來 shape 相同的值為 True 和 False 的數組。
In [34]: a[np.isnan(a)] = -1In [35]: a
Out[35]:
array([[ 0., -1., 2., 3.],[ 4., 5., -1., 7.],[ 8., 9., 10., 11.],[12., 13., -1., 15.],[16., 17., -1., 19.],[20., 21., 22., 23.]])In [36]:
4. 找缺失值
NumPy 使用 np.nan 標記缺失值,給定如下數組 a,求出缺失值的索引。如下使用 where 函數,返回滿足條件的位置索引:
In [36]: a = np.array([ 0., 1., np.nan, 3., np.nan, np.nan, 6., 7., 8., 9.])In [37]: a
Out[37]: array([ 0., 1., nan, ..., 7., 8., 9.])In [38]: np.where(np.isnan(a))
Out[38]: (array([2, 4, 5], dtype=int64),)In [39]:
5. 返回無缺失值的行
**給定數組,找出沒有任何缺失值的行:
In [39]: a = np.array([[ 0., np.nan, 2., 3.],...: [ 4., 5., np.nan, 7.],...: [ 8., 9., 10., 11.],...: [12., 13., np.nan, 15.],...: [16., 17., np.nan, 19.],...: [20., 21., 22., 23.]])In [39]: In [40]: m = np.sum(np.isnan(a), axis=1) == 0In [41]: m
Out[41]: array([False, False, True, False, False, True])In [42]: a[m]
Out[42]:
array([[ 8., 9., 10., 11.],[20., 21., 22., 23.]])In [43]:
總結
以上是生活随笔為你收集整理的Numpy 整体复制、按块复制、向量化操作、寻找缺失值、填充缺失值的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 求一个文艺范个性签名!
- 下一篇: 子宫腺肌症与ca199