日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

Numpy 整体复制、按块复制、向量化操作、寻找缺失值、填充缺失值

發布時間:2023/11/27 生活经验 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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. 向量化操作

借助 NumPyvectorize 實現操作向量化。原生的 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 相同的值為 TrueFalse 的數組。

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 整体复制、按块复制、向量化操作、寻找缺失值、填充缺失值的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。