numpy個人不熟知識點整理

2021-10-25 15:51:18 字數 2149 閱讀 4571

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不允許重複鍵出...