久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

Python 數(shù)據(jù)分析(一):NumPy 基礎(chǔ)知識

 文炳春秋 2020-03-13

1. 簡介

NumPy(Numerical Python)是一個開源的 Python 科學(xué)計算擴展庫,,主要用來處理任意維度數(shù)組與矩陣,通常對于相同的計算任務(wù),,使用 NumPy 要比直接使用 Python 基本數(shù)據(jù)結(jié)構(gòu)要簡單,、高效的多。安裝使用 pip install numpy 命令即可,。

2. 使用

2.1 ndarray

ndarray 即 n 維數(shù)數(shù)組類型,,它是一個相同數(shù)據(jù)類型的集合,,以 0 下標(biāo)為開始進(jìn)行集合中元素的索引,。

創(chuàng)建數(shù)組可以使用 NumPy 的 array 方法,具體格式如下:

array(p_object, dtype=None, copy=True, order=‘K’, subok=False, ndmin=0)

  • p_object:數(shù)組或嵌套的數(shù)列

  • dtype:數(shù)組元素的數(shù)據(jù)類型

  • copy:是否需要復(fù)制

  • order:創(chuàng)建數(shù)組的樣式,,C 為行方向,,F(xiàn) 為列方向,A 為任意方向(默認(rèn))

  • subok:默認(rèn)返回一個與基類類型一致的數(shù)組

  • ndmin:生成數(shù)組的最小維度

當(dāng)然,,還可以使用 arange 方法,,下面看一下具體使用示例。

創(chuàng)建數(shù)組

看一下如何創(chuàng)建一維數(shù)組

import numpy as np

arr1 = np.array([1, 2, 3, 4, 5])
arr2 = np.array(range(1, 6))
arr3 = np.arange(1, 6)
print (arr1)
print (arr2)
print (arr3)

看一下如何創(chuàng)建多維數(shù)組,以二維數(shù)組為例

import numpy as np

arr = np.array([[1, 2], [3, 4], [5, 6]])
print(arr)

常用屬性

通過示例來看一下 ndarray 對象的常用屬性

import numpy as np

arr = np.array([1, 2, 3])
# 元素類型
print(arr.dtype)
# 形狀
print(arr.shape)
# 元素個數(shù)
print(arr.size)
# 維度
print(arr.ndim)
# 每個元素大?。ㄗ止?jié))
print(arr.itemsize)

改變數(shù)組的形狀

import numpy as np

arr = np.arange(30)
print(arr)
# 變成二維數(shù)組
arr.shape = (5, 6)
print(arr)
# 變成三維數(shù)組
arr = arr.reshape((2, 3, 5))
print(arr)

2.2 數(shù)據(jù)類型

通過下表來看一下 NumPy 的常用數(shù)據(jù)類型,。

類型 描述
int_ 默認(rèn)的整數(shù)類型(類似于 C 語言中的 long,int32 或 int64)
intc 與 C 的 int 類型一樣,,一般是 int32 或 int 64
intp 用于索引的整數(shù)類型(類似于 C 的 ssize_t,,一般情況下仍然是 int32 或 int64)
int8 字節(jié)(-128 to 127)
int16 整數(shù)(-32768 to 32767)
int32 整數(shù)(-2147483648 to 2147483647)
int64 整數(shù)(-9223372036854775808 to 9223372036854775807)
uint8 無符號整數(shù)(0 to 255)
uint16 無符號整數(shù)(0 to 65535)
uint32 無符號整數(shù)(0 to 4294967295)
uint64 無符號整數(shù)(0 to 18446744073709551615)
bool_ 布爾型數(shù)據(jù)類型(True 或者 False)
float_ float64 類型的簡寫
float16 半精度浮點數(shù),包括:1 個符號位,,5 個指數(shù)位,,10 個尾數(shù)位
float32 單精度浮點數(shù),,包括:1 個符號位,,8 個指數(shù)位,23 個尾數(shù)位
float64 雙精度浮點數(shù),,包括:1 個符號位,,11 個指數(shù)位,,52 個尾數(shù)位
complex_ complex128 類型的簡寫,即 128 位復(fù)數(shù)
complex64 復(fù)數(shù),,表示雙 32 位浮點數(shù)(實數(shù)部分和虛數(shù)部分)
complex128 復(fù)數(shù),,表示雙 64 位浮點數(shù)(實數(shù)部分和虛數(shù)部分)

通過示例來看一下如何修改數(shù)據(jù)類型。

import numpy as np

arr1 = np.array([1, 2, 3])
arr2 = np.array([1.111, 2.222, 3.333])
# 當(dāng)前數(shù)據(jù)類型
print(arr1.dtype)
# 修改數(shù)據(jù)類型
arr1 = arr1.astype(np.int64)
print(arr1.dtype)
# 保留一位小數(shù)
arr2 = np.round(arr2, 1)
print(arr2)

2.3 索引與切片

NumPy 數(shù)組支持索引,、切片操作,,還可以進(jìn)行迭代,先看一下一維數(shù)組,。

import numpy as np

arr = np.array([1, 2, 3, 4, 5, 6])
print(arr[3])
# 修改元素值
arr[3] = 10
print(arr[3])
print(arr[2:])
print(arr[2:4])
print(arr[4:])
for i in arr:
    print(i)

再看一下多維數(shù)組的這些操作,。

import numpy as np

arr = np.arange(12).reshape(3, 4)
print(arr)
# 取某一個值
print(arr[2, 3])
# 取多個不連續(xù)的值
print(arr[[0, 2],[1, 3]])
# 取一行
print(arr[0])
# 連續(xù)取多行
print(arr[1:])
# 取不連續(xù)的多行
print(arr[[0, 2]])
# 取一列
print(arr[:, 0])
# 連續(xù)取多列
print(arr[:, 2:])
# 取不連續(xù)的多列
print(arr[:, [0, 2]])

2.4 副本與視圖

視圖(淺復(fù)制)只是原有數(shù)據(jù)的一個引用,通過該引用可訪問,、操作原有數(shù)據(jù),,如果我們對視圖進(jìn)行修改,它會影響原始數(shù)據(jù),,因為淺復(fù)制共享內(nèi)存,。

副本(深復(fù)制)是對數(shù)據(jù)的完整拷貝,如果我們對副本進(jìn)行修改,,它不會影響到原始數(shù)據(jù),,因為深復(fù)制不共享內(nèi)存。

調(diào)用 ndarray 的 view() 方法會產(chǎn)生一個視圖,,下面通過示例來看一下,。

import numpy as np

a = np.arange(6).reshape(2,3)
# 創(chuàng)建視圖
b = a.view()
print('a的id:', id(a))
print('b的id:', id(b))
# 修改 b 的形狀
b.shape =  3,2
print('a的形狀:')
print(a)
print('b的形狀:')
print(b)
print(a is b)

調(diào)用 ndarray 的 copy() 方法會產(chǎn)生一個副本,下面通過示例來看一下,。

import numpy as np

a = np.arange(1, 6)
# 創(chuàng)建副本
b = a.copy()
print(a is b)
b[1] = 10
print(a[1])
print(b[1])

2.5 軸的概念

NumPy 中的軸簡單來說就是方向的意思,,使用數(shù)字 0,、1、2 表示,,一維數(shù)組只有 0 軸,,二維數(shù)組有 0、1 軸,,三維數(shù)組有 0,、1、2 軸,,了解軸的相應(yīng)概念可以方便我們進(jìn)行相應(yīng)計算,。

2.6 基本運算

數(shù)組與數(shù)字之間運算

看一下數(shù)組與數(shù)字之間的加、減,、乘,、除運算。

import numpy as np

arr = np.arange(12).reshape(3, 4)
print(arr + 3)
print(arr - 1)
print(arr * 2)
print(arr / 3)

數(shù)組與數(shù)組之間運算

看一下數(shù)組與數(shù)組之間的運算,。

import numpy as np

# 相同行數(shù),,相同列數(shù)
a = np.arange(12).reshape(3, 4)
b = np.arange(20, 32).reshape(3, 4)
print(a + b)
print(b * a)
# 相同行數(shù)
c = np.arange(12).reshape(3, 4)
d = np.arange(3).reshape(3, 1)
print(c + d)
print(c - d)
# 相同列數(shù)
e = np.arange(12).reshape(4, 3)
f = np.arange(3).reshape(1, 3)
print(e * f)
print(e - f)

常用數(shù)學(xué)運算

import numpy as np

arr = np.array([[33, 55], [11, 66], [22, 99]])
print(arr)
# 最大值
print(np.max(arr))
# 最小值
print(np.min(arr))
# 某一軸上的最大值
print(np.max(arr, 1))
# 某一軸上的最小值
print(np.min(arr, 1))
# 平均值
print(np.mean(arr))
# 某一行、一列的平均值
print(np.mean(arr, axis=1))
# 最大值索引
print(np.argmax(arr))
print(np.argmax(arr, axis=1))
# 最小值索引
print(np.argmin(arr))
print(np.argmin(arr, axis=1))
# 極差
print(np.ptp(arr))
print(np.ptp(arr, axis=1))
# 方差
print(np.var(arr))
# 標(biāo)準(zhǔn)差
print(np.std(arr))
# 中位數(shù)
print(np.median(arr))

2.7 常用操作

添加操作

NumPy 的 append() 方法可以在數(shù)組的末尾添加值,,該操作會分配至整個數(shù)組,,并把原數(shù)組復(fù)制到新數(shù)組,該操作需保證輸入的維度匹配,,下面看一下使用示例,。

import numpy as np

arr = np.array([[1, 3, 5], [2, 4, 6]])
# 添加元素
print(np.append(arr, [1, 1, 3]))
# 沿 0 軸添加元素
print(np.append(arr, [[1, 1, 3]], axis=0))
# 沿 1 軸添加元素
print(np.append(arr, [[1, 1, 3], [2, 1, 5]], axis=1))

我們還可以使用 insert() 方法進(jìn)行添加操作,該方法在給定索引前沿給定軸向數(shù)組中插入值,,下面看一下使用示例,。

import numpy as np

arr = np.array([[1, 3, 5], [2, 4, 6]])
# 添加元素
print(np.insert(arr, 1, [1, 1, 3]))
# 沿 0 軸添加元素
print(np.insert(arr, 1, [1, 1, 3], axis=0))
# 沿 1 軸添加元素
print(np.insert(arr, 1, [1, 5], axis=1))

刪除操作

NumPy 的 delete() 可以對數(shù)組進(jìn)行刪除操作,下面看一下使用示例,。

import numpy as np

arr = np.array([[1, 3, 5], [2, 4, 6]])
# 刪除元素
print(np.delete(arr, 1))
# 沿 0 軸刪除元素
print(np.delete(arr, 1, axis=0))
# 沿 1 軸刪除元素
print(np.delete(arr, 1, axis=1))

去重操作

NumPy 的 unique() 方法可以去除數(shù)組中的重復(fù)元素,。

import numpy as np

arr = np.array([1, 3, 5, 2, 4, 6, 1, 5, 3])
# 去除重復(fù)元素
print(np.unique(arr))
# 去重數(shù)組的索引數(shù)組
u, indices = np.unique(arr, return_index=True)
print(indices)
# 去重元素的重復(fù)數(shù)量
u, indices = np.unique(arr, return_counts=True)
print(indices)

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點,。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報,。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多