最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

numpy如何按條件給元素賦值np.where、np.clip

 更新時(shí)間:2023年06月14日 10:50:10   作者:大Py  
這篇文章主要介紹了numpy如何按條件給元素賦值np.where、np.clip問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

numpy按條件給元素賦值np.where、np.clip

np.where(condition, [x, y])

屬于numpy的元素選擇函數(shù)

Parameters:

  • condition:條件,是一個(gè)類array的bool數(shù)組。個(gè)人根絕是一個(gè)bool mask。
  • x,y:類array數(shù)組。當(dāng)condition是True時(shí)返回x,為False時(shí)返回y。x與必須同時(shí)給出或者同時(shí)不給出,不能只給出一個(gè)。當(dāng)都不給出時(shí),依據(jù)nonzero返回處理。

Returns:

1、當(dāng)只給出condition時(shí),返回一個(gè)tuple,該tuple就是滿足condition的元素的index。tuple元素的個(gè)數(shù)是原來array的維度,一維一個(gè)元素,二維兩個(gè)元素。每個(gè)元素對應(yīng)位置數(shù)據(jù)組合起來就是滿足condition的元素的index。

2、給出x和y,返回一個(gè)和condition相同形狀的數(shù)組。這里x與y的shape很重要,而且由condition的shape決定。當(dāng)condition是(k,m,n)時(shí),x與y 的shape依賴condition的維度。

x,y的shape如下如圖:

當(dāng)滿足條件時(shí),會根據(jù)x和y的維度取替換condition上的對應(yīng)值。

使用舉例1:

arr = np.arange(12).reshape(3,4)
arr
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11]])
np.where(arr > 6)
(array([1, 2, 2, 2, 2], dtype=int64), array([3, 0, 1, 2, 3], dtype=int64))

返回一個(gè)tuple,兩個(gè)元素,因?yàn)閍rr的shape是(3,4)是二維的。第一個(gè)元素是行,第二個(gè)元素是列。第一個(gè)滿足條件的元素的第1行第3列的元素,即元素7。

使用舉例2:

np.where(arr > 6, 0, arr)
array([[0, 1, 2, 3],
       [4, 5, 6, 0],
       [0, 0, 0, 0]])

滿足條件的替換為0,不滿足的返回arr中的值。從arr取值時(shí)是按照索引取選取的。這里要注意,當(dāng)x或y的維度小于condition的維度時(shí),忽略高維度的索引,比如忽略k,只根據(jù)m和n的值從x或y取數(shù)。

個(gè)人理解就一句話:用同一個(gè)維度(粒度)上的數(shù)據(jù)取替換同一個(gè)維度(粒度)上的數(shù)據(jù)。  

實(shí)際操作中使用較多的還是用(k,m,n)原數(shù)組或者常數(shù)替換操作,即替換原來數(shù)組中的某些值。

np.clip(a, a_min, a_max, out=None)

Params

a_min, a_max:整數(shù)、類array數(shù)組或者None,下面逐一解讀。

  • 整數(shù)時(shí),將小于a_min的值替換為a_min。然后,將大于a_max的值替換為a_max。處于兩者之間數(shù)保持不變。
  • 類array時(shí),當(dāng)a的形狀是(m,n),a_min、a_max是(m,1)、(m,)或者是(m,n)。通俗講,要么給a中每一個(gè)一維數(shù)組中每一個(gè)元素提供一個(gè)比較值,要么給a中每個(gè)一維數(shù)組提供一個(gè)統(tǒng)計(jì)的比較值,要么提供一個(gè)與一維數(shù)組形狀形同的數(shù)組,然后廣播。擴(kuò)展到3維也是一樣的道理。
  • None,當(dāng)a_min為None時(shí),表示小于amax的值保留原值。當(dāng)a_max為None時(shí),表示大于amin的值保留原值。 a_min和a_max只能有一個(gè)是None。

Returns:

返回一個(gè)與傳入數(shù)組形狀相同的數(shù)組。

舉例:

arr
array([[ 7, -3, 12],
       [14,  0,  8]])

給二維數(shù)組中每一個(gè)數(shù)組傳入一個(gè)統(tǒng)一的比較值

b
array([[1],
       [2]])
np.clip(arr,b,None)
array([[ 7,  1, 12],
       [14,  2,  8]])

傳入一個(gè)和一維數(shù)組相同形狀的數(shù)組,然后沿著軸0廣播。

b
array([1, 4, 9])
np.clip(arr,b,arr)
array([[ 7,  4, 12],
       [14,  4,  9]])

Numpy.where()/np.where() 函數(shù)的使用

修改數(shù)組中符合條件的元素值/查找數(shù)組中符合要求的元素的位置

numpy.where() 用法

1. np.where(condition, x, y):用于修改滿足條件的元素值

用法解釋:滿足condition將數(shù)組元素修改為x,否則修改為y,最后生成一個(gè)新的數(shù)組。

注意:np.where不會修改原數(shù)組的數(shù)值,而會生成一個(gè)新的數(shù)組

  • 1.1 一維數(shù)組
# 生成-5到4的一維數(shù)組
arr1 = np.arange(-5,5)
print('原數(shù)組 ? ? ? ? ? :',arr1)
arr2 = np.where(arr1>0,1,-1)
print('查看原數(shù)組是否修改:',arr1)
print('修改后的數(shù)組 ? ? ?:',arr2)

輸出結(jié)果:

原數(shù)組           : [-5 -4 -3 -2 -1  0  1  2  3  4]
查看原數(shù)組是否修改: [-5 -4 -3 -2 -1  0  1  2  3  4]
修改后的數(shù)組      : [-1 -1 -1 -1 -1 -1  1  1  1  1]

如果只對一個(gè)條件進(jìn)行修改:>0 保持不變,小于0變?yōu)?1

將where語句修改為如下即可:

arr2 = np.where(arr1>0,arr1,-1)

即,不修改的位置為arr原數(shù)組的值

  • 1.2 二維數(shù)組
arr1 = np.arange(-5,5).reshape(2,5)
print('原數(shù)組',arr1,sep='\n')
arr2 = np.where(arr1>0,1,-1)
print('修改后的數(shù)組',arr2,sep='\n')

輸出結(jié)果:

原數(shù)組
[[-5 -4 -3 -2 -1]
 [ 0  1  2  3  4]]
修改后的數(shù)組
[[-1 -1 -1 -1 -1]
 [-1  1  1  1  1]]

2 np.where(condition): 用于找出滿足條件的元素位置(坐標(biāo))

  • 2.1 一維數(shù)組
# 生成-5到4的一維數(shù)組
arr1 = np.arange(-5,5)
print(arr1)
arr2 = np.where(arr1>0)
print(arr2)
[-5 -4 -3 -2 -1 ?0 ?1 ?2 ?3 ?4]
(array([6, 7, 8, 9], dtype=int64),)

上述結(jié)果說明:arr1 > 0的元素所在的位置是[6,7,8,9]

并且arr2是個(gè)元組的類型,其中包含著數(shù)組類型的位置坐標(biāo)。

print(type(arr2))
print(type(arr2[0]))
-------------------------
結(jié)果:
<class 'tuple'>
<class 'numpy.ndarray'>

2.1.1利用生成的元素進(jìn)行索引數(shù)據(jù):

  • 法1直接利用元組索引,比較方便
  • 法2利用數(shù)組進(jìn)行索引
# 索引法1
print(arr1[arr2])
# 索引法2
print(arr1[arr2[0]])

2.1.2 不滿足條件的情況

# 不滿足條件
arr1 = np.arange(-5,5)
arr3 = np.where(arr1 < -5)
print(arr3)
print(arr1[arr3])
--------------------------------
結(jié)果:
(array([], dtype=int64),)
[]

2.2.1判斷滿足的條件的元素個(gè)數(shù)

利用數(shù)組的.size屬性很好判斷

arr1 = np.arange(-5,5)
arr2 = np.where(arr1 > 0)
arr3 = np.where(arr1 < -5)
print(arr2[0].size)
print(arr3[0].size)
------------------------------------
結(jié)果:
4
0
  • 2.2二維數(shù)組

二維數(shù)組與一維數(shù)組類似,但是返回的元組中有兩個(gè)數(shù)組:分別表示行的索引和列的索引

arr1 = np.arange(0,10).reshape(2,5)
print(arr1)
arr2 = np.where(arr1>3)
print(arr2)

結(jié)果:

[[0 1 2 3 4]
 [5 6 7 8 9]]
(array([0, 1, 1, 1, 1, 1], dtype=int64), array([4, 0, 1, 2, 3, 4], dtype=int64))

從結(jié)果中我們可以看到,元組中的第一個(gè)數(shù)組表示的是行的索引,第二個(gè)數(shù)組是列的索引

所以滿足>3的元素位置是:[0,4],[1,0],…

索引方法類似

# 索引
arr1[arr2]
-----------
array([4, 5, 6, 7, 8, 9])

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python竟然能剪輯視頻

    Python竟然能剪輯視頻

    平時(shí)我們在刷短視頻或者看到一些視頻的時(shí)候,希望可以把視頻里面的音頻提取出來當(dāng)背景音樂究竟是怎么操作的呢,下面小編教大家python如何去提取一個(gè)視頻里面的音頻,感興趣的朋友一起看看吧
    2021-05-05
  • 使用Python創(chuàng)建和導(dǎo)出Jupyter Notebook的完整教程

    使用Python創(chuàng)建和導(dǎo)出Jupyter Notebook的完整教程

    在數(shù)據(jù)科學(xué)和機(jī)器學(xué)習(xí)的工作中,Jupyter Notebook 已成為不可或缺的工具,不過,許多時(shí)候我們希望自動化生成 Notebook 文件,并將其導(dǎo)出為 HTML 或其他格式,這篇文章將帶你通過 Python 來實(shí)現(xiàn)這一目標(biāo),需要的朋友可以參考下
    2026-01-01
  • 詳解python爬取彈幕與數(shù)據(jù)分析

    詳解python爬取彈幕與數(shù)據(jù)分析

    這篇文章主要介紹了詳解python爬取彈幕與數(shù)據(jù)分析,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-11-11
  • python庫sklearn常用操作

    python庫sklearn常用操作

    sklearn是一個(gè)無論對于機(jī)器學(xué)習(xí)還是深度學(xué)習(xí)都必不可少的重要的庫,里面包含了關(guān)于機(jī)器學(xué)習(xí)的幾乎所有需要的功能,本文不會先整體介紹sklearn庫,而是先從sklearn庫中的一些具體實(shí)例入手,感興趣的朋友一起看看吧
    2021-08-08
  • python實(shí)現(xiàn)雙人貪吃蛇小游戲

    python實(shí)現(xiàn)雙人貪吃蛇小游戲

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)雙人貪吃蛇小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • Python占用的內(nèi)存優(yōu)化教程

    Python占用的內(nèi)存優(yōu)化教程

    這篇文章主要給大家介紹了關(guān)于Python占用的內(nèi)存優(yōu)化教程,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Python具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • Python批量將Word文件轉(zhuǎn)為PDF文件的實(shí)現(xiàn)示例

    Python批量將Word文件轉(zhuǎn)為PDF文件的實(shí)現(xiàn)示例

    如果想要批量把Word文檔轉(zhuǎn)換為PDF文檔,我們可以使用第三方模塊win32com,本文就來詳細(xì)的介紹一下Python批量將Word文件轉(zhuǎn)為PDF文件的實(shí)現(xiàn)示例,感興趣的可以了解一下
    2023-08-08
  • python貪吃蛇游戲代碼

    python貪吃蛇游戲代碼

    這篇文章主要為大家詳細(xì)介紹了python貪吃蛇游戲代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • python curl2pyreqs 生成接口腳本實(shí)戰(zhàn)教程

    python curl2pyreqs 生成接口腳本實(shí)戰(zhàn)教程

    這篇文章主要介紹了python curl2pyreqs 生成接口腳本實(shí)戰(zhàn)教程,首先下載 curl2pyreqs 庫,打開調(diào)試模式,在Network這里獲取接口的cURL,需要的朋友可以參考下
    2023-10-10
  • 使用Python在Excel中設(shè)置和自定義頁眉和頁腳的操作方法

    使用Python在Excel中設(shè)置和自定義頁眉和頁腳的操作方法

    本文介紹如何使用Python在Excel中設(shè)置和自定義頁眉和頁腳,內(nèi)容包括插入基礎(chǔ)頁眉和頁腳、在頁眉和頁腳中添加圖片、為奇偶頁設(shè)置不同的頁眉和頁腳,以及為第一頁設(shè)置不同的頁眉和頁腳,感興趣的小伙伴跟著小編一起來看看吧
    2025-02-02

最新評論

大关县| 武宁县| 镇赉县| 宁波市| 元氏县| 金堂县| 印江| 襄樊市| 彩票| 平阴县| 吴旗县| 桐庐县| 阿坝县| 博湖县| 柳江县| 利辛县| 遂宁市| 晋州市| 嘉定区| 铜鼓县| 沁阳市| 昭平县| 会昌县| 韶关市| 蒲江县| 安宁市| 个旧市| 商南县| 安塞县| 汤原县| 惠安县| 建宁县| 封丘县| 井冈山市| 凭祥市| 长顺县| 青川县| 徐闻县| 长泰县| 东丰县| 玛曲县|