numpy學習 不定時補充

2022-07-07 22:42:15 字數 3623 閱讀 3999

問題描述:kaggle比賽練手中的titanic問題中,當使用隨機森林來填充損失的資料時,只判斷了其中需要補充的一列的資料是否存在null,對於其他資料沒有判斷導致出現了:

分析原因後,所需要做的是判斷numpy ndarry陣列中是否存在nan, infinity或者 資料太大導致溢位,我們在這裡決定採用的函式方法有

np.isnan(x)    #

判斷目標x是否包含nan

np.where(np.isnan(x)) #

判斷x中所含有的nan資料所在的位置

當使用 np.isnan(x) 函式後,由於陣列內容過多,導致無法查詢到是否存在某個陣列元素為nan

通過np.where來查詢x陣列中為nan的元素所在位置並且判斷是否存在nan元素

呼叫np.nan_to_num()函式將x陣列中的nan元素、infinite元素轉為普通常數

功能: 將矩陣a按照axis排序,並返回排序後的下標

引數: a:輸入矩陣,axis:需要排序的維度

返回值: 輸出排序後的下標

import

numpy as np

x = np.array([1,4,3,-1,6,9])

x.argsort()

#array([3, 0, 1, 2, 4, 5], dtype=int64)

np.argsort函式實際是將一維陣列 x 從小到大排序,並且返回其對應的下標index

利用這點,我們可以輕鬆獲取 一維陣列中最大的元素,第二大,第三大的元素等等:

import

numpy as np

x = np.array([1,4,3,-1,6,9])

print(x[x.argsort()[-1]])#

返回最大的元素

print(x[x.argsort()[-2]])#

返回第二大的元素#9

#6

想到這點,我們自然而然的想到了python中的sort函式和numpy中的sort函式.在這裡我們繼續進行討論:

import

numpy as np

x = np.array([1,4,3,-1,6,9])

x.sort()

#x=array([-1, 1, 3, 4, 6, 9])

import

numpy as np

x = np.array([1,4,3,-1,6,9])

np.sort(x)

#x=array([ 1, 4, 3, -1, 6, 9])

有趣的現象是,當我們呼叫x.sort()和np.sort(x)後,前者的一維陣列發生了改變,而後者沒有.我在網上查詢了一下他們的區別,並沒有找到有效的答案,而真正做比較的是:

sort和sorted的區別,我們繼續研究:(查了一下numpy的使用者手冊,並沒有np.sorted函式的定義)

實際上sorted()和sort()是python自帶的乙個函式

list.sort(reverse=true/false, key=myfunc)

reverse

optional. reverse=true will sort the list descending. default is reverse=false

keyoptional. a function to specify the sorting criteria(s)

sorted(iterable, key=key, reverse=reverse)

iterable

required. the sequence to sort, list, dictionary, tuple etc.

keyoptional. a function to execute to decide the order. default is none

reverse

optional. a boolean. false will sort ascending, true will sort descending. default is false

import

numpy as np

x = np.array([1,4,3,-1,6,9])

x.sort()

#x=array([-1, 1, 3, 4, 6, 9])

import

numpy as np

x = np.array([1,4,3,-1,6,9])

x_sorted=sorted(x)

x_sorted_reverse=sorted(x,reverse=true)

print

(x)print

(x_sorted)

print

(x_sorted_reverse)

#[ 1 4 3 -1 6 9]

#[-1, 1, 3, 4, 6, 9]

#[9, 6, 4, 3, 1, -1]

一般人們更多的用的是sorted函式,不改變原列表。ok,下面我們來研究一下sorted函式的更多用法。

假設我們得到了乙個字典資料,我們怎麼讓字典進行排序呢。我們的目標有兩個,乙個是讓字典資料根據他們的key來進行排列,另外乙個是根據他們的value來排序。

#

根據value排序

dict_major=

major=sorted(dict_major.items(), key=lambda x: x[1], reverse=true)

#major=[('b', 20), ('c', 15), ('a', 10)]

#根據key排序

dict_major=

major=sorted(dict_major.items(), key=lambda x: x[0], reverse=true)

#major=[('c', 15), ('b', 20), ('a', 10)]

這裡的dict_major.items()實際上是將d轉換為可迭代物件

dict_major.items()

dict_items([('a', 10), ('b', 20), ('c', 15)])

去除陣列中的重複數字,並進行排序之後輸出,也可以對字串生成的array進行去重和排序

arr = np.array([[7, 8], [3, 3], [5, 4]])

np.unique(arr)

#array([3, 4, 5, 7, 8])

python學習 不定時更新

元組 t 1,2,3 print t print t 0 3 集合set1 print set1 查詢元素 print 張三瘋 in set1 集合新增元素 set1.add 5 print set1 結構體 print 1 dic print dic,dic age dic weight 160 ...

陣列的常用方法總結 不定時更新補充

1.reverse 翻轉陣列沒有排序功能 2.push 從尾巴處新增乙個元素 3.pop 從尾巴處刪除乙個元素 並返回所刪除的元素 3.unshift 從頭部新增乙個元素 4.shift 從頭部刪除乙個元素 並返回所刪除的元素 5.splice 從下標為幾的位置開始刪除 刪除幾個 被刪除元素需要新陣...

numpy筆記補充

第四篇,第五篇的部落格有介紹numpy包哦,這裡是一點補充 emmmmmm可能是很多補充 歸納功能 用來運算元組和矩陣,是科學計算 深度學習等高階領域的必備工具,使用tensorflow caffe框架訓練神經網路模型時,需要進行大量複雜的運算,可以直接呼叫numpy裡面的api 還包含了很多使用的...