柚子快報激活碼778899分享:Numpy方法總結(jié)(三)
柚子快報激活碼778899分享:Numpy方法總結(jié)(三)
一.?NumPy 數(shù)學(xué)函數(shù)
1. 三角函數(shù)
NumPy 提供了標(biāo)準(zhǔn)的三角函數(shù):sin()、cos()、tan()。
np.sin(a*np.pi/180)
np.cos(a*np.pi/180)
np.tan(a*np.pi/180)
示例
import numpy as np
a = np.array([0,30,45,60,90])
print ('不同角度的正弦值:')
# 通過乘 pi/180 轉(zhuǎn)化為弧度
print (np.sin(a*np.pi/180))
print ('\n')
print ('數(shù)組中角度的余弦值:')
print (np.cos(a*np.pi/180))
print ('\n')
print ('數(shù)組中角度的正切值:')
print (np.tan(a*np.pi/180))
打印
arcsin,arccos,和 arctan 函數(shù)返回給定角度的 sin,cos 和 tan 的反三角函數(shù)。
這些函數(shù)的結(jié)果可以通過 numpy.degrees() 函數(shù)將弧度轉(zhuǎn)換為角度。
示例
import numpy as np
a = np.array([0,30,45,60,90])
print ('含有正弦值的數(shù)組:')
sin = np.sin(a*np.pi/180)
print (sin)
print ('\n')
print ('計算角度的反正弦,返回值以弧度為單位:')
inv = np.arcsin(sin)
print (inv)
print ('\n')
print ('通過轉(zhuǎn)化為角度制來檢查結(jié)果:')
print (np.degrees(inv))
print ('\n')
print ('arccos 和 arctan 函數(shù)行為類似:')
cos = np.cos(a*np.pi/180)
print (cos)
print ('\n')
print ('反余弦:')
inv = np.arccos(cos)
print (inv)
print ('\n')
print ('角度制單位:')
print (np.degrees(inv))
print ('\n')
print ('tan 函數(shù):')
tan = np.tan(a*np.pi/180)
print (tan)
print ('\n')
print ('反正切:')
inv = np.arctan(tan)
print (inv)
print ('\n')
print ('角度制單位:')
print (np.degrees(inv))
打印
2. 舍入函數(shù)
(1)around
numpy.around() 函數(shù)返回指定數(shù)字的四舍五入值。
numpy.around(a,decimals)
a: 數(shù)組decimals: 舍入的小數(shù)位數(shù)。 默認(rèn)值為0。 如果為負(fù),整數(shù)將四舍五入到小數(shù)點(diǎn)左側(cè)的位置
示例
import numpy as np
a = np.array([1.0,5.55, 123, 0.567, 25.532])
print ('原數(shù)組:')
print (a)
print ('\n')
print ('舍入后:')
print (np.around(a))
print (np.around(a, decimals = 1))
print (np.around(a, decimals = -1))
打印
(2)floor()
numpy.floor() 返回小于或者等于指定表達(dá)式的最大整數(shù),即向下取整。
示例
import numpy as np
a = np.array([-1.7, 1.5, -0.2, 0.6, 10])
print ('提供的數(shù)組:')
print (a)
print ('\n')
print ('修改后的數(shù)組:')
print (np.floor(a))
打印
(3)ceil()
numpy.ceil() 返回大于或者等于指定表達(dá)式的最小整數(shù),即向上取整。
示例
import numpy as np
a = np.array([-1.7, 1.5, -0.2, 0.6, 10])
print ('提供的數(shù)組:')
print (a)
print ('\n')
print ('修改后的數(shù)組:')
print (np.ceil(a))
打印
二. 算數(shù)函數(shù)
1. 基本運(yùn)算
NumPy 算術(shù)函數(shù)包含簡單的加減乘除:?add(),subtract(),multiply()?和?divide()。
需要注意的是數(shù)組必須具有相同的形狀或符合數(shù)組廣播規(guī)則。
示例
import numpy as np
a = np.arange(9, dtype=np.float_).reshape(3, 3)
print('第一個數(shù)組:')
print(a)
print('第二個數(shù)組:')
b = np.array([10, 10, 10])
print(b)
print('兩個數(shù)組相加:')
print(np.add(a, b))
print('兩個數(shù)組相減:')
print(np.subtract(a, b))
print('兩個數(shù)組相乘:')
print(np.multiply(a, b))
print('兩個數(shù)組相除:')
print(np.divide(a, b))
打印
2. 取倒數(shù)
numpy.reciprocal()
numpy.reciprocal() 函數(shù)返回參數(shù)逐元素的倒數(shù)。如?1/4?倒數(shù)為?4/1。
示例
在上述代碼基礎(chǔ)上
print(np.reciprocal(np.multiply(a, b)))
打印
3. 求相應(yīng)元素的冪
numpy.power()
numpy.power() 函數(shù)將第一個輸入數(shù)組中的元素作為底數(shù),計算它與第二個輸入數(shù)組中相應(yīng)元素的冪。
示例
import numpy as np
a = np.array([10, 100, 1000])
print('我們的數(shù)組是;')
print(a)
print('調(diào)用 power 函數(shù):')
print(np.power(a, 2))
print('第二個數(shù)組:')
b = np.array([1, 2, 3])
print(b)
print('再次調(diào)用 power 函數(shù):')
print(np.power(a, b))
打印
4.?取余
numpy.mod()
numpy.mod() 計算輸入數(shù)組中相應(yīng)元素的相除后的余數(shù)。 函數(shù) numpy.remainder() 也產(chǎn)生相同的結(jié)果。
示例
import numpy as np
a = np.array([10, 20, 30])
b = np.array([3, 5, 7])
print('第一個數(shù)組:')
print(a)
print('第二個數(shù)組:')
print(b)
print('調(diào)用 mod() 函數(shù):')
print(np.mod(a, b))
print('調(diào)用 remainder() 函數(shù):')
print(np.remainder(a, b))
打印
三. 統(tǒng)計函數(shù)
NumPy 提供了很多統(tǒng)計函數(shù),用于從數(shù)組中查找最小元素,最大元素,百分位標(biāo)準(zhǔn)差和方差等。
1. 最值
numpy.amin(a, axis=None, out=None, keepdims=
numpy.amax(a, axis=None, out=None, keepdims=
a: 輸入的數(shù)組,可以是一個NumPy數(shù)組或類似數(shù)組的對象。axis: 可選參數(shù),用于指定在哪個軸上計算最小值。如果不提供此參數(shù),則返回整個數(shù)組的最小值??梢允且粋€整數(shù)表示軸的索引,也可以是一個元組表示多個軸。out: 可選參數(shù),用于指定結(jié)果的存儲位置。keepdims: 可選參數(shù),如果為True,將保持結(jié)果數(shù)組的維度數(shù)目與輸入數(shù)組相同。如果為False(默認(rèn)值),則會去除計算后維度為1的軸。initial: 可選參數(shù),用于指定一個初始值,然后在數(shù)組的元素上計算最小值。where: 可選參數(shù),一個布爾數(shù)組,用于指定僅考慮滿足條件的元素。軸 0 獲取列的最值,軸 1 獲取行的最值。
示例
import numpy as np
a = np.array([[3, 7, 5], [8, 4, 3], [2, 4, 9]])
print('我們的數(shù)組是:')
print(a)
print('調(diào)用 amin() 函數(shù):')
print(np.amin(a, 1))
print('再次調(diào)用 amin() 函數(shù):')
print(np.amin(a, 0))
print('調(diào)用 amax() 函數(shù):')
print(np.amax(a))
print('再次調(diào)用 amax() 函數(shù):')
print(np.amax(a, axis=0))
打印
0軸按照行,1軸按照列排列
為0則要計算每一列的最值,為1則計算每一行的最值
2. 差值
numpy.ptp()
numpy.ptp()?函數(shù)計算數(shù)組中元素最大值與最小值的差(最大值 - 最小值)。
numpy.ptp(a, axis=None, out=None, keepdims=
a: 輸入的數(shù)組,可以是一個 NumPy 數(shù)組或類似數(shù)組的對象。axis: 可選參數(shù),用于指定在哪個軸上計算峰-峰值。如果不提供此參數(shù),則返回整個數(shù)組的峰-峰值??梢允且粋€整數(shù)表示軸的索引,也可以是一個元組表示多個軸。out: 可選參數(shù),用于指定結(jié)果的存儲位置。keepdims: 可選參數(shù),如果為 True,將保持結(jié)果數(shù)組的維度數(shù)目與輸入數(shù)組相同。如果為 False(默認(rèn)值),則會去除計算后維度為1的軸。initial: 可選參數(shù),用于指定一個初始值,然后在數(shù)組的元素上計算峰-峰值。where: 可選參數(shù),一個布爾數(shù)組,用于指定僅考慮滿足條件的元素。
示例
import numpy as np
a = np.array([[3,7,5],[8,4,3],[2,4,9]])
print ('我們的數(shù)組是:')
print (a)
print ('\n')
print ('調(diào)用 ptp() 函數(shù):')
print (np.ptp(a))
print ('\n')
print ('沿軸 1 調(diào)用 ptp() 函數(shù):')
print (np.ptp(a, axis = 1))
print ('\n')
print ('沿軸 0 調(diào)用 ptp() 函數(shù):')
print (np.ptp(a, axis = 0))
打印
3. 百分位數(shù)
百分位數(shù)是統(tǒng)計中使用的度量,表示小于這個值的觀察值的百分比。 函數(shù)numpy.percentile()接受以下參數(shù)。
numpy.percentile(a, q, axis)
a: 輸入數(shù)組q: 要計算的百分位數(shù),在 0 ~ 100 之間axis: 沿著它計算百分位數(shù)的軸
首先明確百分位數(shù):?????????????????????????????????????????????????????????????????????????????????????????????????????(取自菜鳥)
第 p 個百分位數(shù)是這樣一個值,它使得至少有 p% 的數(shù)據(jù)項(xiàng)小于或等于這個值,且至少有 (100-p)% 的數(shù)據(jù)項(xiàng)大于或等于這個值。
舉個例子:高等院校的入學(xué)考試成績經(jīng)常以百分位數(shù)的形式報告。比如,假設(shè)某個考生在入學(xué)考試中的語文部分的原始分?jǐn)?shù)為 54 分。相對于參加同一考試的其他學(xué)生來說,他的成績?nèi)绾尾⒉蝗菀字馈5侨绻挤謹(jǐn)?shù)54分恰好對應(yīng)的是第70百分位數(shù),我們就能知道大約70%的學(xué)生的考分比他低,而約30%的學(xué)生考分比他高。
這里的 p = 70。
示例
import numpy as np
a = np.array([[10, 7, 4], [3, 2, 1]])
print ('我們的數(shù)組是:')
print (a)
print ('調(diào)用 percentile() 函數(shù):')
# 50% 的分位數(shù),就是 a 里排序之后的中位數(shù)
print (np.percentile(a, 50))
# axis 為 0,在縱列上求
print (np.percentile(a, 50, axis=0))
# axis 為 1,在橫行上求
print (np.percentile(a, 50, axis=1))
# 保持維度不變
print (np.percentile(a, 50, axis=1, keepdims=True))
打印
4. 中位數(shù)
numpy.median() 函數(shù)用于計算數(shù)組 a 中元素的中位數(shù)(中值)
numpy.median(a, axis=None, out=None, overwrite_input=False, keepdims=
a: 輸入的數(shù)組,可以是一個 NumPy 數(shù)組或類似數(shù)組的對象。axis: 可選參數(shù),用于指定在哪個軸上計算中位數(shù)。如果不提供此參數(shù),則計算整個數(shù)組的中位數(shù)。可以是一個整數(shù)表示軸的索引,也可以是一個元組表示多個軸。out: 可選參數(shù),用于指定結(jié)果的存儲位置。overwrite_input: 可選參數(shù),如果為True,則允許在計算中使用輸入數(shù)組的內(nèi)存。這可能會在某些情況下提高性能,但可能會修改輸入數(shù)組的內(nèi)容。keepdims: 可選參數(shù),如果為True,將保持結(jié)果數(shù)組的維度數(shù)目與輸入數(shù)組相同。如果為False(默認(rèn)值),則會去除計算后維度為1的軸。
示例
import numpy as np
a = np.array([[30, 65, 70], [80, 95, 10], [50, 90, 60]])
print('我們的數(shù)組是:')
print(a)
print('調(diào)用 median() 函數(shù):')
print(np.median(a))
print('沿軸 0 調(diào)用 median() 函數(shù):')
print(np.median(a, axis=0))
print('沿軸 1 調(diào)用 median() 函數(shù):')
print(np.median(a, axis=1))
打印
5. 算術(shù)平均值
numpy.mean() 函數(shù)返回數(shù)組中元素的算術(shù)平均值,如果提供了軸,則沿其計算。
算術(shù)平均值是沿軸的元素的總和除以元素的數(shù)量。
numpy.mean(a, axis=None, dtype=None, out=None, keepdims=
a: 輸入的數(shù)組,可以是一個 NumPy 數(shù)組或類似數(shù)組的對象。axis: 可選參數(shù),用于指定在哪個軸上計算平均值。如果不提供此參數(shù),則計算整個數(shù)組的平均值??梢允且粋€整數(shù)表示軸的索引,也可以是一個元組表示多個軸。dtype: 可選參數(shù),用于指定輸出的數(shù)據(jù)類型。如果不提供,則根據(jù)輸入數(shù)據(jù)的類型選擇合適的數(shù)據(jù)類型。out: 可選參數(shù),用于指定結(jié)果的存儲位置。keepdims: 可選參數(shù),如果為True,將保持結(jié)果數(shù)組的維度數(shù)目與輸入數(shù)組相同。如果為False(默認(rèn)值),則會去除計算后維度為1的軸。
示例
import numpy as np
a = np.array([[1, 2, 3], [3, 4, 5], [4, 5, 6]])
print('我們的數(shù)組是:')
print(a)
print('調(diào)用 mean() 函數(shù):')
print(np.mean(a))
print('沿軸 0 調(diào)用 mean() 函數(shù):')
print(np.mean(a, axis=0))
print('沿軸 1 調(diào)用 mean() 函數(shù):')
print(np.mean(a, axis=1))
打印
6.?加權(quán)平均值
numpy.average() 函數(shù)根據(jù)在另一個數(shù)組中給出的各自的權(quán)重計算數(shù)組中元素的加權(quán)平均值。
該函數(shù)可以接受一個軸參數(shù)。 如果沒有指定軸,則數(shù)組會被展開。
加權(quán)平均值即將各數(shù)值乘以相應(yīng)的權(quán)數(shù),然后加總求和得到總體值,再除以總的單位數(shù)。
考慮數(shù)組[1,2,3,4]和相應(yīng)的權(quán)重[4,3,2,1],通過將相應(yīng)元素的乘積相加,并將和除以權(quán)重的和,來計算加權(quán)平均值。
numpy.average(a, axis=None, weights=None, returned=False)
a: 輸入的數(shù)組,可以是一個 NumPy 數(shù)組或類似數(shù)組的對象。axis: 可選參數(shù),用于指定在哪個軸上計算加權(quán)平均值。如果不提供此參數(shù),則計算整個數(shù)組的加權(quán)平均值??梢允且粋€整數(shù)表示軸的索引,也可以是一個元組表示多個軸。weights: 可選參數(shù),用于指定對應(yīng)數(shù)據(jù)點(diǎn)的權(quán)重。如果不提供權(quán)重數(shù)組,則默認(rèn)為等權(quán)重。returned: 可選參數(shù),如果為True,將同時返回加權(quán)平均值和權(quán)重總和。
示例
import numpy as np
a = np.array([1, 2, 3, 4])
print('我們的數(shù)組是:')
print(a)
print('調(diào)用 average() 函數(shù):')
print(np.average(a))
# 不指定權(quán)重時相當(dāng)于 mean 函數(shù)
wts = np.array([4, 3, 2, 1])
print('再次調(diào)用 average() 函數(shù):')
print(np.average(a, weights=wts))
# 如果 returned 參數(shù)設(shè)為 true,則返回權(quán)重的和
print('權(quán)重的和:')
print(np.average([1, 2, 3, 4], weights=[4, 3, 2, 1], returned=True))
打印
10為權(quán)重和,即1+2+3+4=10.0
在多維數(shù)組中,可以指定用于計算的軸
示例
import numpy as np
a = np.arange(6).reshape(3, 2)
print('我們的數(shù)組是:')
print(a)
print('修改后的數(shù)組:')
wt = np.array([3, 5])
print(np.average(a, axis=1, weights=wt))
print('修改后的數(shù)組:')
print(np.average(a, axis=1, weights=wt, returned=True))
打印
7. 標(biāo)準(zhǔn)差
標(biāo)準(zhǔn)差是一組數(shù)據(jù)平均值分散程度的一種度量。
標(biāo)準(zhǔn)差是方差的算術(shù)平方根。
公式
std = sqrt(mean((x - x.mean())**2))
示例
import numpy as np
print (np.std([1,2,3,4]))
打印
?8.?方差
統(tǒng)計中的方差(樣本方差)是每個樣本值與全體樣本值的平均數(shù)之差的平方值的平均數(shù),即 mean((x - x.mean())** 2)。
換句話說,標(biāo)準(zhǔn)差是方差的平方根。
示例
import numpy as np
print(np.std([1, 2, 3, 4]))
print(np.var([1, 2, 3, 4]))
打印
四.??排序、條件篩選函數(shù)
種類速度最壞情況工作空間穩(wěn)定性'quicksort'(快速排序)1O(n^2)0否'mergesort'(歸并排序)2O(n*log(n))~n/2是'heapsort'(堆排序)3O(n*log(n))0否
1.?numpy.sort()
numpy.sort() 函數(shù)返回輸入數(shù)組的排序副本。函數(shù)格式如下:
numpy.sort(a, axis, kind, order)
a: 要排序的數(shù)組axis: 沿著它排序數(shù)組的軸,如果沒有數(shù)組會被展開,沿著最后的軸排序, axis=0 按列排序,axis=1 按行排序kind: 默認(rèn)為'quicksort'(快速排序)order: 如果數(shù)組包含字段,則是要排序的字段
示例
import numpy as np
a = np.array([[3, 7], [9, 1]])
print('我們的數(shù)組是:')
print(a)
print('調(diào)用 sort() 函數(shù):')
print(np.sort(a))
print('按列排序:')
print(np.sort(a, axis=0))
# 在 sort 函數(shù)中排序字段
dt = np.dtype([('name', 'S10'), ('age', int)])
a = np.array([("raju", 21), ("anil", 25), ("ravi", 17), ("amar", 27)], dtype=dt)
print('我們的數(shù)組是:')
print(a)
print('按 name 排序:')
print(np.sort(a, order='name'))
print('按 age 排序:')
print(np.sort(a, order='age'))
打印
2.?numpy.argsort()
numpy.argsort() 函數(shù)返回的是數(shù)組值從小到大的索引值。
import numpy as np
x = np.array([3, 1, 2])
print('我們的數(shù)組是:')
print(x)
print('對 x 調(diào)用 argsort() 函數(shù):')
y = np.argsort(x)
print(y)
print('以排序后的順序重構(gòu)原數(shù)組:')
print(x[y])
print('使用循環(huán)重構(gòu)原數(shù)組:')
for i in y:
print(x[i], end=" ")
打印
3.?numpy.lexsort()
用于對多個序列進(jìn)行排序。把它想象成對電子表格進(jìn)行排序,每一列代表一個序列,排序時優(yōu)先照顧靠后的列。
舉例
numpy.lexsort()?的一個簡單例子是考慮一個人的名字和他們的年齡。我們可以使用?numpy.lexsort()?來按照名字的字典順序?qū)θ藛T進(jìn)行排序,并在名字相同的情況下按照年齡進(jìn)行排序。
示例
import numpy as np
# 創(chuàng)建一個包含人名和年齡的數(shù)組
names = np.array(['Alice', 'Bob', 'Catherine', 'Bob', 'Alice'])
ages = np.array([25, 30, 20, 35, 28])
# 使用 numpy.lexsort() 對數(shù)組進(jìn)行排序
sorted_indices = np.lexsort((names, ages))
# 根據(jù)排序后的索引數(shù)組對原始數(shù)組進(jìn)行排序
sorted_names = names[sorted_indices]
sorted_ages = ages[sorted_indices]
print("排序后的人名:", sorted_names)
print("排序后的年齡:", sorted_ages)
打印
函數(shù)描述msort(a)數(shù)組按第一個軸排序,返回排序后的數(shù)組副本。np.msort(a) 相等于 np.sort(a, axis=0)。sort_complex(a)對復(fù)數(shù)按照先實(shí)部后虛部的順序進(jìn)行排序。partition(a, kth[, axis, kind, order])指定一個數(shù),對數(shù)組進(jìn)行分區(qū)argpartition(a, kth[, axis, kind, order])可以通過關(guān)鍵字 kind 指定算法沿著指定軸對數(shù)組進(jìn)行分區(qū)
4.?sort_complex
對復(fù)數(shù)按照先實(shí)部后虛部的順序進(jìn)行排序。
示例
import numpy as np
a = np.sort_complex([5, 3, 6, 2, 1])
print(a)
b = np.sort_complex([1 + 2j, 2 - 1j, 3 - 2j, 3 - 3j, 3 + 5j])
print(b)
打印
5.?partition()?
指定一個數(shù),對數(shù)組進(jìn)行分區(qū)
import numpy as np
a = np.array([3, 4, 2, 1])
b = np.partition(a, 3) # 將數(shù)組 a 中所有元素(包括重復(fù)元素)從小到大排列,3 表示的是排序數(shù)組索引為 3 的數(shù)字,比該數(shù)字小的排在該數(shù)字前面,比該數(shù)字大的排在該數(shù)字的后面
c = np.partition(a, (1, 3)) # 小于 1 的在前面,大于 3 的在后面,1和3之間的在中間
print(b)
print('-------------------------')
print(c)
打印
6.?argpartition
可以通過關(guān)鍵字 kind 指定算法沿著指定軸對數(shù)組進(jìn)行分區(qū)
找到數(shù)組的第 3 小(index=2)的值和第 2 大(index=-2)的值
示例
import numpy as np
arr = np.array([46, 57, 23, 39, 1, 10, 0, 120])
a = arr[np.argpartition(arr, 2)[2]]
print(a)
b = arr[np.argpartition(arr, -2)[-2]]
print(b)
打印
同時找到第 3 和第 4 小的值。注意這里,用 [2,3] 同時將第 3 和第 4 小的排序好,然后可以分別通過下標(biāo) [2] 和 [3] 取得。
示例
c=arr[np.argpartition(arr, [2,3])[2]]
print(c)
d=arr[np.argpartition(arr, [2,3])[3]]
print(d)
打印
7. argmax() 和 argmin()
numpy.argmax() 和 numpy.argmin()函數(shù)分別沿給定軸返回最大和最小元素的索引。
示例
import numpy as np
a = np.array([[30, 40, 70], [80, 20, 10], [50, 90, 60]])
print('我們的數(shù)組是:')
print(a)
print('調(diào)用 argmax() 函數(shù):')
print(np.argmax(a))
print('展開數(shù)組:')
print(a.flatten())
print('沿軸 0 的最大值索引:')
maxindex = np.argmax(a, axis=0)
print(maxindex)
print('沿軸 1 的最大值索引:')
maxindex = np.argmax(a, axis=1)
print(maxindex)
print('調(diào)用 argmin() 函數(shù):')
minindex = np.argmin(a)
print(minindex)
print('展開數(shù)組中的最小值:')
print(a.flatten()[minindex])
print('沿軸 0 的最小值索引:')
minindex = np.argmin(a, axis=0)
print(minindex)
print('沿軸 1 的最小值索引:')
minindex = np.argmin(a, axis=1)
print(minindex)
打印
8. nonzero()
numpy.nonzero() 函數(shù)返回輸入數(shù)組中非零元素的索引。
示例
import numpy as np
a = np.array([[30, 40, 0], [0, 20, 10], [50, 0, 60]])
print('我們的數(shù)組是:')
print(a)
print('調(diào)用 nonzero() 函數(shù):')
print(np.nonzero(a))
打印
9.?where()
numpy.where() 函數(shù)返回輸入數(shù)組中滿足給定條件的元素的索引。
import numpy as np
x = np.arange(9.).reshape(3, 3)
print('我們的數(shù)組是:')
print(x)
print('大于 3 的元素的索引:')
y = np.where(x > 3)
print(y)
print('使用這些索引來獲取滿足條件的元素:')
print(x[y])
打印
10.?extract()
numpy.extract() 函數(shù)根據(jù)某個條件從數(shù)組中抽取元素,返回滿條件的元素。
示例
條件放在前面,數(shù)組放在后面
import numpy as np
x = np.arange(9.).reshape(3, 3)
print ('我們的數(shù)組是:')
print (x)
# 定義條件, 選擇偶數(shù)元素
condition = np.mod(x,2) == 0
print ('按元素的條件值:')
print (condition)
print ('使用條件提取元素:')
print (np.extract(condition, x))
打印
五. 字節(jié)交換
1.介紹
在幾乎所有的機(jī)器上,多字節(jié)對象都被存儲為連續(xù)的字節(jié)序列。字節(jié)順序,是跨越多字節(jié)的程序?qū)ο蟮拇鎯σ?guī)則。
大端模式:指數(shù)據(jù)的高字節(jié)保存在內(nèi)存的低地址中,而數(shù)據(jù)的低字節(jié)保存在內(nèi)存的高地址中,這樣的存儲模式有點(diǎn)兒類似于把數(shù)據(jù)當(dāng)作字符串順序處理:地址由小向大增加,而數(shù)據(jù)從高位往低位放;這和我們的閱讀習(xí)慣一致。 小端模式:指數(shù)據(jù)的高字節(jié)保存在內(nèi)存的高地址中,而數(shù)據(jù)的低字節(jié)保存在內(nèi)存的低地址中,這種存儲模式將地址的高低和數(shù)據(jù)位權(quán)有效地結(jié)合起來,高地址部分權(quán)值高,低地址部分權(quán)值低。
例如在 C 語言中,一個類型為 int 的變量 x 地址為 0x100,那么其對應(yīng)地址表達(dá)式&x的值為 0x100。且x的四個字節(jié)將被存儲在存儲器的 0x100, 0x101, 0x102, 0x103位置。
2. numpy.ndarray.byteswap()
numpy.ndarray.byteswap() 函數(shù)將 ndarray 中每個元素中的字節(jié)進(jìn)行大小端轉(zhuǎn)換。
示例
import numpy as np
a = np.array([1, 256, 8755], dtype=np.int16)
print('我們的數(shù)組是:')
print(a)
print('以十六進(jìn)制表示內(nèi)存中的數(shù)據(jù):')
print(map(hex, a))
# byteswap() 函數(shù)通過傳入 true 來原地交換
print('調(diào)用 byteswap() 函數(shù):')
print(a.byteswap(True))
print('十六進(jìn)制形式:')
print(map(hex, a))
# 我們可以看到字節(jié)已經(jīng)交換了
打印
柚子快報激活碼778899分享:Numpy方法總結(jié)(三)
好文推薦
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場。
轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。