zcq
numpy重在數值計算,也是大部分python科學計算庫的基礎庫,多用在大型,多維陣列上執行數值計算
廣播:陣列和數進行計算是陣列中每個元素分別和數進行計算
廣播可以在缺失或長度為1的維度上進行
從後往前,一樣或為1 即可計算
如shape(3,3,2)可以和shape(3,2)(3,1)(1,2)計算
numpy讀取資料:
np.loadtxt(frame.dtype=np.float,delimiter=none,skiprows=0,usecols=none,unpack=false)
引數解釋
frame
檔案,字串或產生器,可以是.gz或是.bz2壓縮檔案
dtype
資料型別,可選,csv的字串以什麼資料型別讀入陣列中,預設np.float
delimiter
分割字串,預設是任意空格,改為逗號
skiprows
跳過前x行,一般實跳過第一行表頭
usecols
讀取指定的列,索引,元組型別
unpack
如果是true,讀取屬性將分別寫入不同陣列變數,false讀入資料只昔日入乙個陣列變數,預設false
取行:t2[2]
取連續多行:t2[2:]
取不連續的多行:
t2[[2,8,10]]
t2[[2,8,10],:]
取列:t2[:,0]取第一列
t[:,2:]取第3列及以後的列
t[:,[0,2]]取第1列和第三列
t[2:5,1:4]取行和列交叉的部分
取乙個二維表中的不同點:
c=t2[[0,2,2],[0,1,3]]
取到座標為(0,0)(2,1)(2,3)這三個點
t[t<10]=3:把小於10的元素都替換成3
np.where(t<10,3,10):把小於10的元素替換成3,其他元素替換成10
裁剪:np.clip(10,18):把小於10的替換成10,大於18的替換成18,中間值得元素不變
nan不會被替換
豎直拼接:np.vstack((t1,t2))
水平拼接:np.hstack((t1,t2))
行交換:t[[1,2],:]=t[[2,1],:]
nan:
np.nan: float型別
1.兩個nan不相等
np.nan!=np.nan
2.判斷nan的個數:
np.count_nonzero(t!=t)
3.把nan替換成0:t[np.isnan(t)]=0
4.nan和任何值計算都是nan
例子:把t1中的nan用它所在的那一列的其他數字的平均值代替
import numpy as np
def fill_ndarray
(t1)
:for i in range
(t1.shape[1]
):#遍歷每一列
tem_col=t1[
:,i]#當前列
nan_num=np.
count_nonzero
(tem_col!=tem_col)
if nan_num!=
0:#當前列有nan
tem_not_nan_col=tem_col[tem_col==tem_col]#當前列不為nan的array
tem_col[np.
isnan
(tem_col)
]=tem_not_nan_col.
mean()
return t1
if __name__ ==
'__main__'
: t1=np.
arange(24
).reshape(4
,6).
astype
("float"
) t1[1,
2:]=np.nan
print
("t1:"
)print
(t1)
t2=fill_ndarray
(t1)
print
("t2:"
)print
(t2)
STL不熟知識點總結
在前面已經總結了stl基本知識點的應用,本篇部落格我將主要總結一下自己對stl這一方面不熟的知識點。一.用迭代器遍歷map中的元素 訪問標準容器的元素的通用方法是使用迭代器 for map iterator it b.begin it b.end it 2.it first 表示用迭代器指向map中...
知識點整理
一 標準庫容器和演算法 1.順序容器 與前面類似 2.關聯容器 map和multimap 元素包含key 鍵 和值 value 兩部分 按照鍵對元素排序 map不允許重複元素出現,但multimap可以 set和multliset 是包含已排序物件的關聯容器 只是單純的鍵的集合 set不允許重複鍵出...
知識點整理
一 標準庫容器和演算法 1.順序容器 與前面類似 2.關聯容器 map和multimap 元素包含key 鍵 和值 value 兩部分 按照鍵對元素排序 map不允許重複元素出現,但multimap可以 set和multliset 是包含已排序物件的關聯容器 只是單純的鍵的集合 set不允許重複鍵出...