數據分析打工人常用NumPy 70個高頻操作(上篇)

2021-02-20 pythonic生物人
目錄
1、numpy導入、查看版本
2、numpy創建1維數組
3、numpy創建布爾型數組
4、取出numpy.ndarray中滿足條件的元素
5、用新值替換numpy.ndarray中滿足條件的元素(數組本身已被修改)
6、用新值替換numpy.ndarray中滿足條件的元素(數組本身不被修改)
7、numpy.ndarray從1維變換為2維
8、垂直方向堆積兩個numpy.ndarray
9、水平方向堆積兩個numpy.ndarray
10、numpy函數輸出指定數組
11、兩個numpy.ndarray提取交集
12、兩個numpy.ndarray去除另外一個中出現的元素
13、提取兩個numpy.ndarray相同元素的索引
14、提取numpy.ndarray中滿足某個條件的元素
15、定義函數操作numpy.ndarray中元素
16、改變numpy.ndarray中兩列順序
17、改變numpy.ndarray中兩行順序
18、顛倒numpy.ndarray中各行順序 
19、顛倒numpy.ndarray中各列順序
20、創建一個包含隨機浮點數的numpy.ndarray
21、numpy.ndarray中所有元素保留三位小數
22、numpy.ndarray中所有元素使用科學計數法
23、大numpy.ndarray省略部分元素
24、大numpy.ndarray輸出所有元素
25、numpy.ndarray導入數據
26、取出numpy.ndarray中某列
27、一維numpy.ndarray轉2維
28、求numpy.ndarray的均值、中位數、標準差
29、歸一化numpy.ndarray使其值分布在0到1之間
30、求numpy.ndarray的softmax score
31、求numpy.ndarray的分位數
32、numpy.ndarray的隨機位置插入值
33、提取numpy.ndarray預設值坐標
34、按多個條件過濾numpy.ndarray
35、過濾numpy.ndarray中包含預設值得行

1、numpy導入、查看版本
import numpy as np#導入numpy
print(np.__version__)#查看numpy版本

2、numpy創建1維數組
arr = np.arange(10)#創建0到1的1維數組
print(type(arr))
arr

3、numpy創建布爾型數組
#方法1
np.full((3, 3), True, dtype=bool)#創建3x3的布爾數組

#方法2
np.ones((3,3), dtype=bool)

4、取出numpy.ndarray中滿足條件的元素
arr = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

arr[arr % 2 == 1]#被2整除餘數為1的數組

5、用新值替換numpy.ndarray中滿足條件的元素(數組本身已被修改)
arr = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
print(arr)
arr[arr % 2 == 1] = -1#被2整除餘數為1的元素替換為-1,此時arr本身被修改
arr

6、用新值替換numpy.ndarray中滿足條件的元素(數組本身不被修改)
arr = np.arange(10)
out = np.where(arr % 2 == 1, -1, arr)
print(arr)#此時arr本身未被修改
out

7、numpy.ndarray從1維變換為2維
arr = np.arange(10)
arr.reshape(2, 5)  # 第一個數字設置行數、第二個數字設置列數

8、垂直方向堆積兩個numpy.ndarray
a = np.arange(10).reshape(2,-1)
b = np.repeat(1, 10).reshape(2,-1)
print('a numpy.ndarray:')
print(a)
print('b numpy.ndarray:')
print(b)
#方法1
np.concatenate([a, b], axis=0)

#方法2
np.vstack([a, b])

#方法3
np.r_[a, b]

9、水平方向堆積兩個numpy.ndarray
a = np.arange(10).reshape(2,-1)
b = np.repeat(1, 10).reshape(2,-1)
print('a numpy.ndarray:')
print(a)
print('b numpy.ndarray:')
print(b)
#方法1
np.concatenate([a, b], axis=1)

#方法2
np.hstack([a, b])

#方法3
np.c_[a, b]

10、numpy函數輸出指定數組
a = np.array([1,2,3])
np.r_[np.repeat(a, 3), np.tile(a, 3)]

11、兩個numpy.ndarray提取交集
a = np.array([1,2,3,2,3,4,3,4,5,6])
b = np.array([7,2,10,2,7,4,9,4,9,8])
np.intersect1d(a,b)

12、兩個numpy.ndarray去除另外一個中出現的元素
a = np.array([1,2,3,4,5])
b = np.array([5,6,7,8,9])

# 從 'a'去掉'b'中出現的元素
np.setdiff1d(a,b)

13、提取兩個numpy.ndarray相同元素的索引
a = np.array([1,2,3,2,3,4,3,4,5,6])
b = np.array([7,2,10,2,7,4,9,4,9,8])

np.where(a == b)

14、提取numpy.ndarray中滿足某個條件的元素
a = np.arange(15)
print(a)
#方法1
index = np.where((a >= 5) & (a <= 10))
a[index]

#方法2
index = np.where(np.logical_and(a>=5, a<=10))
a[index]

#方法3
a[(a >= 5) & (a <= 10)]

15、定義函數操作numpy.ndarray中元素
def maxx(x, y):
    """Get the maximum of two items"""
    if x >= y:
        return x
    else:
        return y

pair_max = np.vectorize(maxx, otypes=[float])

a = np.array([5, 7, 9, 8, 6, 4, 5])
b = np.array([6, 3, 4, 8, 9, 7, 1])

pair_max(a, b)

16、改變numpy.ndarray中兩列順序
arr = np.arange(9).reshape(3,3)
print(arr)

arr[:, [1,0,2]]

17、改變numpy.ndarray中兩行順序
arr = np.arange(9).reshape(3,3)
print(arr)
arr[[1,0,2], :]

18、顛倒numpy.ndarray中各行順序
import numpy as np
arr = np.arange(9).reshape(3,3)
print(arr)

arr[::-1]

19、顛倒numpy.ndarray中各列順序
arr = np.arange(9).reshape(3,3)
print(arr)

arr[:, ::-1]

20、創建一個包含隨機浮點數的numpy.ndarray
#方法1
rand_arr = np.random.randint(low=5, high=10, size=(5,3)) + np.random.random((5,3))

#方法2
rand_arr = np.random.uniform(5,10, size=(5,3))
print(rand_arr)

21、numpy.ndarray中所有元素保留三位小數
rand_arr = np.random.random([5,3])

np.set_printoptions(precision=3)
rand_arr[:4]

22、numpy.ndarray中所有元素使用科學計數法
np.random.seed(100)
rand_arr = np.random.random([3,3])/1e3
rand_arr

23、大numpy.ndarray省略部分元素
np.set_printoptions(threshold=6)
a = np.arange(15)
a

24、大numpy.ndarray輸出所有元素
import sys
np.set_printoptions(threshold=6)
a = np.arange(15)

np.set_printoptions(threshold=sys.maxsize)
a

25、numpy.ndarray導入數據
url = 'https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data'
iris = np.genfromtxt(url, delimiter=',', dtype='object')

iris[:3]

26、取出numpy.ndarray中某列
url = 'https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data'
iris_1d = np.genfromtxt(url, delimiter=',', dtype=None)
print(iris_1d.shape)

# Solution:
species = np.array([row[4] for row in iris_1d])
species[:5]

27、一維numpy.ndarray轉2維
url = 'https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data'
iris_1d = np.genfromtxt(url, delimiter=',', dtype=None)

#方法1
iris_2d = np.array([row.tolist()[:4] for row in iris_1d])
iris_2d[:4]

#方法2
iris_2d = np.genfromtxt(url, delimiter=',', dtype='float', usecols=[0,1,2,3])
iris_2d[:4]

28、求numpy.ndarray的均值、中位數、標準差
url = 'https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data'
iris = np.genfromtxt(url, delimiter=',', dtype='object')
sepallength = np.genfromtxt(url, delimiter=',', dtype='float', usecols=[0])

mu, med, sd = np.mean(sepallength), np.median(sepallength), np.std(sepallength)
print(mu, med, sd)

29、歸一化numpy.ndarray使其值分布在0到1之間
url = 'https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data'
sepallength = np.genfromtxt(url, delimiter=',', dtype='float', usecols=[0])

#方法1
Smax, Smin = sepallength.max(), sepallength.min()
S = (sepallength - Smin)/(Smax - Smin)
#方法2
S = (sepallength - Smin)/sepallength.ptp() 
S

30、求numpy.ndarray的softmax score
url = 'https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data'
iris = np.genfromtxt(url, delimiter=',', dtype='object')
sepallength = np.array([float(row[0]) for row in iris])

def softmax(x):
    """Compute softmax values for each sets of scores in x.
    https://stackoverflow.com/questions/34968722/how-to-implement-the-softmax-function-in-python"""
    e_x = np.exp(x - np.max(x))
    return e_x / e_x.sum(axis=0)

print(softmax(sepallength))

31、求numpy.ndarray的分位數
url = 'https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data'
sepallength = np.genfromtxt(url, delimiter=',', dtype='float', usecols=[0])

np.percentile(sepallength, q=[5, 95])

32、numpy.ndarray的隨機位置插入值
url = 'https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data'
iris_2d = np.genfromtxt(url, delimiter=',', dtype='object')

#方法1
i, j = np.where(iris_2d)


np.random.seed(100)
iris_2d[np.random.choice((i), 20), np.random.choice((j), 20)] = np.nan

#方法2
np.random.seed(100)
iris_2d[np.random.randint(150, size=20), np.random.randint(4, size=20)] = np.nan

print(iris_2d[:10])

33、提取numpy.ndarray預設值坐標
url = 'https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data'
iris_2d = np.genfromtxt(url, delimiter=',', dtype='float', usecols=[0,1,2,3])
iris_2d[np.random.randint(150, size=20), np.random.randint(4, size=20)] = np.nan

print("Number of missing values: \n", np.isnan(iris_2d[:, 0]).sum())
print("Position of missing values: \n", np.where(np.isnan(iris_2d[:, 0])))

34、按多個條件過濾numpy.ndarray
url = 'https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data'
iris_2d = np.genfromtxt(url, delimiter=',', dtype='float', usecols=[0,1,2,3])

condition = (iris_2d[:, 2] > 1.5) & (iris_2d[:, 0] < 5.0)
iris_2d[condition]

35、過濾numpy.ndarray中包含預設值得行
url = 'https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data'
iris_2d = np.genfromtxt(url, delimiter=',', dtype='float', usecols=[0,1,2,3])
iris_2d[np.random.randint(150, size=20), np.random.randint(4, size=20)] = np.nan

#方法1
any_nan_in_row = np.array([~np.any(np.isnan(row)) for row in iris_2d])
iris_2d[any_nan_in_row][:5]

#方法2
iris_2d[np.sum(np.isnan(iris_2d), axis = 1) == 0][:5]

相關焦點

  • 數據分析打工人常用NumPy 70個高頻操作(下篇)
    42、numpy.ndarray概率抽樣43、numpy.ndarray按某個指標分類後求第二大的元素44、通過numpy.ndarray某一列排序45、挑選numpy.ndarray中頻數最高的元素46、輸出numpy.ndarray中第一次大於給定元素的位置47、使用給定值替換numpy.ndarray中滿足條件的元素48、獲取numpy.ndarray
  • Python數據分析 - Numpy
    如今,np被Python其它科學計算包作為基礎包,已成為Python 數據分析的基礎,可以說,NP是SciPy、Pandas等數據處理或科學計算庫最基本的函數功能庫。因此,理解np的數據類型對python數據分析十分有幫助。下面,本文將介紹Np的常用操作和基本數據類型。NP提供了以下重點功能。
  • 【數據分析】Numpy
    Numpy是高性能科學計算和數據分析的基礎包。它也是pandas等其他數據分析的工具的基礎,基本所有數據分析的包都用過它。它將常用的數學函數都支持向量化運算,使得這些數學函數能夠直接對數組進行操作,將本來需要在Python級別進行的循環,放到C語言的運算中,明顯地提高了程序的運算速度。
  • Python 數據分析:Numpy 介紹
    如今,np被Python其它科學計算包作為基礎包,已成為Python 數據分析的基礎,可以說,NP是SciPy、Pandas等數據處理或科學計算庫最基本的函數功能庫。因此,理解np的數據類型對python數據分析十分有幫助。下面,本文將介紹Np的常用操作和基本數據類型。NP提供了以下重點功能。
  • Python 數據分析:NumPy 基礎知識
    )常用屬性通過示例來看一下 ndarray 對象的常用屬性import numpy as nparr = np.array([1, 2, 3])# 元素類型print(arr.dtype= np.arange(30)print(arr)# 變成二維數組arr.shape = (5, 6)print(arr)# 變成三維數組arr = arr.reshape((2, 3, 5))print(arr)2.2 數據類型通過下表來看一下 NumPy 的常用數據類型。
  • python數據分析專題 (9):numpy基礎
    NumPy(Numerical Python的簡稱)是高性能科學計算和數據分析的基礎包。NumPy最重要的一個特點就是其N維數組對象(即ndarray),該對象是一個快速而靈活的大數據集容器。新手可能不理解這句話的含義,這個需要慢慢去理解 。總之,知道numpy是python數據分析最重要的基礎包就可以了。
  • Python|Numpy的常用操作
    import numpy as nplist1 = [1.1, 2.2, 3, 4, 5]nd1 = np.array(list1)print(type(nd1))print(list1)list2 = [[1.1, 2.2, 3, 4, 5],[7.7, 8.8, 9, 10, 11]]nd2 = np.array
  • 從零開始學Python數據分析【4】-- numpy
    # 浮點型的最小值np.fmin# 求和np.sum# 均值np.mean# 標準差np.std# 方差np.var# 中位數np.median映射函數>apply_along_axisapply_along_axis函數與R語言中的apply函數用法一致,可以針對某個軸的方向進行函數操作,同樣,而且在pandas模塊中的DataFrmae對象中,可以使用apply函數
  • Excel和Python常用功能的操作(數據分析)
    Excel與Python都是數據分析中常用的工具,本文介紹這兩種工具是如何實現數據的讀取、生成、計算、修改、統計、抽樣、查找、可視化、存儲等數據處理中的常用操作!Python:通過導入pandas庫,使用 pandas.read_excel("filepath")打開隨機生成數據Excel:拉取一定範圍後,上方輸入公式RAND()Python:導入numpy庫,np.DataFrame(np.random.rand
  • NumPy:創建和操作數值數據
    不同的數據類型可以更緊湊的在內存中存儲數據,但是大多數時候我們都只是操作浮點數據。注意,在上面的例子中,Numpy自動從輸入中識別了數據類型。1.3.3 數據的更多內容1.3.3.1 更多的數據類型1.3.3.1.1 投射「更大」的類型在混合類型操作中勝出:In [175]:np.array([1, 2, 3]) + 1.5Out[175]:array([ 2.5, 3.5, 4.5])賦值不會改變類型!
  • 每個數據科學家都應該知道的20個NumPy操作
    關於數據科學的一切都始於數據,數據以各種形式出現。數字、圖像、文本、x射線、聲音和視頻記錄只是數據源的一些例子。無論數據採用何種格式,都需要將其轉換為一組待分析的數字。因此,有效地存儲和修改數字數組在數據科學中至關重要。
  • numpy中數組操作的相關函數
    ,就是說,先對原始數據進行拷貝,生成一個新的數組,新的數組和原始數組是獨立的,對副本的操作並不會影響到原始數組;視圖是一個數組的引用,對引用進行操作,也就是對原始數據進行操作,所以修改視圖會對應的修改原始數組。
  • Python數據分析之numpy學習(一)
    在學完《廖雪峰Python2.7教程》感覺受益匪淺,掌握了基本的語法之後開始接觸用Python進行數據分析。這裡向大家推薦兩本書《Python數據分析》和《利用Python進行數據分析》,而這兩本書也是目前我正在學習的材料,雖然這兩本書都是基於Python2.x,但對於Python3.x也能正常運行。
  • 從numpy開啟Python數據科學之旅
    一個路徑就是從純程式語言的角度來學習Python的,包括Python編程基礎、編寫函數、Python高級特性、函數式編程、面向對象編程、多進程和多線程、常用內建模塊和第三方庫等等,旨在學習和鍛鍊編程思維,提高小編自身的coding能力。
  • Python數據分析之Numpy學習 2——NumPy 基礎 ndarray對象
    Python數據分析之Numpy學習 2 —— NumPy 基礎學習NumPy(Numerical Python)是高性能科學計算和數據分析的基礎包。NumPy的主要對象是同構數據多維容器(homogeneous multidimensional array)——ndarray,也就是說每一個ndarray都是一個相同類型元素組成的表格(二維)。在NumPy中維度(dimensions)叫做軸(axes),軸的個數叫做秩(rank)。軸這個概念必須牢記,否則放棄吧。首先軸是從0開始計的,0代表最高維,次高維是1,以此類推。
  • 再見Numpy,Pandas!又一個數據分析神器橫空出現!
    ,想必大家都或多或少的有一定的了解,常見的像是numpy和pandas更是大家日常使用的數據分析工具。但是面對大數據的處理時,像是numpy和pandas的在加載數據時,會看到內存用量的飆升,而dask卻可以將這些大的數據進行並行計算。今天小編就帶領大家學習一個並行的計算庫——dask。
  • python數據分析:numpy入門
    微信公眾號:學點啥玩點啥小白友好型python數據分析:numpy入門numpy:一個在python中做科學計算的基礎庫,重在數值計算,也是大部分python科學計算庫的基礎庫,多用於在大型、多維數組上執行數值計算。
  • 數據分析-numpy庫快速了解
    NumPy是SciPy、Pandas等數據處理或科學計算庫的基礎2.numpy庫有什麼用numpy用途是很廣的,涉及到數字計算等都可以使用,它的優勢在於底層是C語言開發的數據非常快。 數組對象可以去掉元素間運算所需的循環,使一維向量更像單個數據 設置專門的數組對象,經過優化,可以提升這類應用的運算速度觀察:科學計算中,一個維度所有數據的類型往往相同 數組對象採用相同的數據類型,有助於節省運算和存儲空間具體可以看下面一個例子:(來源嵩天老師案例)3.numpy庫怎麼使用先安裝numpy
  • Python數據分析之NumPy數值計算
    ,5 個指數位,10 個尾數位float32單精度浮點數,包括:1 個符號位,8 個指數位,23 個尾數位float64雙精度浮點數,包括:1 個符號位,11 個指數位,52 個尾數位complex_complex128 類型的簡寫,即 128 位複數complex64複數,表示雙 32
  • 一鍵獲取新技能,玩轉NumPy數據操作
    大數據文摘出品編譯:李雷、寧靜NumPy是Python中用於數據分析、機器學習、科學計算的重要軟體包。它極大地簡化了向量和矩陣的操作及處理。python的不少數據處理軟體包依賴於NumPy作為其基礎架構的核心部分(例如scikit-learn、SciPy、pandas和tensorflow)。