国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

Python中where()函數的用法詳解

來源:懂視網 責編:小OO 時間:2020-11-27 14:22:32
文檔

Python中where()函數的用法詳解

where()的用法。首先強調一下,where()函數對于不同的輸入,返回的只是不同的。1當數組是一維數組時,返回的值是一維的索引,所以只有一組索引數組。2當數組是二維數組時,滿足條件的數組值返回的是值的位置索引,因此會有兩組索引數組來表示值的位置。例如;
推薦度:
導讀where()的用法。首先強調一下,where()函數對于不同的輸入,返回的只是不同的。1當數組是一維數組時,返回的值是一維的索引,所以只有一組索引數組。2當數組是二維數組時,滿足條件的數組值返回的是值的位置索引,因此會有兩組索引數組來表示值的位置。例如;

本文主要和大家介紹了詳解Python中where()函數的用法,小編覺得挺不錯的,現在分享給大家,也給大家做個參,希望能幫助到大家。

where()的用法

首先強調一下,where()函數對于不同的輸入,返回的只是不同的。

1當數組是一維數組時,返回的值是一維的索引,所以只有一組索引數組

2當數組是二維數組時,滿足條件的數組值返回的是值的位置索引,因此會有兩組索引數組來表示值的位置

例如

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

>>>a=np.reshape(np.arange(20),(4,5))
>>>a 
array([[ 0, 1, 2, 3, 4],
 [ 5, 6, 7, 8, 9],
 [10, 11, 12, 13, 14],
 [15, 16, 17, 18, 19]])
>>>np.where(a>10)
(array([2, 2, 2, 2, 3, 3, 3, 3, 3], dtype=int64),
 array([1, 2, 3, 4, 0, 1, 2, 3, 4], dtype=int64))

對numpy標準庫里的解釋做一個介紹:

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

基于條件condition,返回值來自x或者y.

如果.

參數:

condition : 數組,bool值

When True, yield x, otherwise yield y.

x, y : array_like, 可選

x與y的shape要相同,當condition中的值是true時返回x對應位置的值,false是返回y的

返回值:

out : ndarray or tuple of ndarrays

①如果參數有condition,x和y,它們三個參數的shape是相同的。那么,當condition中的值是true時返回x對應位置的值,false是返回y的。

②如果參數只有condition的話,返回值是condition中元素值為true的位置索引,切是以元組形式返回,元組的元素是ndarray數組,表示位置的索引

>>> np.where([[True, False], [True, True]],
... [[1, 2], [3, 4]],
... [[9, 8], [7, 6]])
array([[1, 8],
 [3, 4]])
>>>
>>> np.where([[0, 1], [1, 0]])
(array([0, 1]), array([1, 0]))
>>>
>>> x = np.arange(9.).reshape(3, 3)
>>> np.where( x > 5 )
(array([2, 2, 2]), array([0, 1, 2]))
>>> x[np.where( x > 3.0 )] # Note: result is 1D.
array([ 4., 5., 6., 7., 8.])
>>> np.where(x < 5, x, -1) # Note: broadcasting.
array([[ 0., 1., 2.],
 [ 3., 4., -1.],
 [-1., -1., -1.]])
Find the indices of elements of x that are in goodvalues.

>>>
>>> goodvalues = [3, 4, 7]
>>> ix = np.in1d(x.ravel(), goodvalues).reshape(x.shape)
>>> ix
array([[False, False, False],
 [ True, True, False],
 [False, True, False]], dtype=bool)
>>> np.where(ix)
(array([1, 1, 2]), array([0, 1, 1]))

兩種方法的示例代碼

第一種用法

np.where(conditions,x,y)

if (condituons成立):

  數組變x

else:

  數組變y

import numpy as np
'''
x = np.random.randn(4,4)
print(np.where(x>0,2,-2))
#試試效果
xarr = np.array([1.1,1.2,1.3,1.4,1.5])
yarr = np.array([2.1,2.2,2.3,2.4,2.5])
zarr = np.array([True,False,True,True,False])
result = [(x if c else y)
 for x,y,c in zip(xarr,yarr,zarr)]
print(result)

#where()函數處理就相當于上面那種方案

result = np.where(zarr,xarr,yarr)
print(result)

'''
#發現個有趣的東西
# #處理2組數組
# #True and True = 0
# #True and False = 1
# #False and True = 2
# #False and False = 3

cond2 = np.array([True,False,True,False])
cond1 = np.array([True,True,False,False])
#第一種處理 太長太丑
result = []
for i in range(4):
 if (cond1[i] & cond2[i]): result.append(0);
 elif (cond1[i]): result.append(1);
 elif (cond2[i]): result.append(2);
 else : result.append(3);
print(result)
#第二種 直接where() 很快很方便
result = np.where(cond1 & cond2,0,np.where(cond1,1,np.where(cond2,2,3)))
print(result)
#第三種 更簡便(好像這跟where()函數半毛錢的關系都沒有
result = 1*(cond1 & -cond2)+2*(cond2 & -cond1)+3*(-(cond1 | cond2)) (沒想到還可以這么表達吧)
print(result)

第二種用法

where(conditions)

相當于給出數組的下標

x = np.arange(16)
print(x[np.where(x>5)])
#
輸出:(array([ 6, 7, 8, 9, 10, 11, 12, 13, 14, 15], dtype=int64),) x = np.arange(16).reshape(-1,4) print(np.where(x>5)) #(array([1, 1, 2, 2, 2, 2, 3, 3, 3, 3], dtype=int64), array([2, 3, 0, 1, 2, 3, 0, 1, 2, 3], dtype=int64)) #注意這里是坐標是前面的一維的坐標,后面是二維的坐標
ix = np.array([[False, False, False],
 [ True, True, False],
 [False, True, False]], dtype=bool)
print(np.where(ix))
#
輸出:(array([1, 1, 2], dtype=int64), array([0, 1, 1], dtype=int64))

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

Python中where()函數的用法詳解

where()的用法。首先強調一下,where()函數對于不同的輸入,返回的只是不同的。1當數組是一維數組時,返回的值是一維的索引,所以只有一組索引數組。2當數組是二維數組時,滿足條件的數組值返回的是值的位置索引,因此會有兩組索引數組來表示值的位置。例如;
推薦度:
標簽: 詳解 的用法 python
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top
主站蜘蛛池模板: 国产一区二区三区久久 | 国产在线高清视频 | 国产亚洲欧美一区二区三区 | 美日韩在线视频 | 成人国产激情福利久久精品 | 国内精品视频一区二区三区 | 国产va免费精品 | 国产高清特黄无遮挡大片 | 国产高清在线精品一区二区三区 | 熟年交尾五十路视频在线播放 | 欧美一区二区在线观看免费网站 | 亚洲欧洲国产经精品香蕉网 | 成人毛片免费免费 | 日韩欧美亚洲国产高清在线 | 亚洲欧美国产精品专区久久 | 日韩国产欧美一区二区三区在线 | 国产亚洲午夜精品a一区二区 | 日韩福利在线观看 | 日韩伦理亚洲欧美在线一区 | 一区二区三区精品牛牛 | 欧美色综合图区 | 国产黄色视屏 | 明星国产欧美日韩在线观看 | 国产在线看不卡一区二区 | 国产欧美日韩在线 | 亚洲欧美日韩视频一区 | 国产区第一页 | 欧美精品一区二区在线观看播放 | 欧美一区二区日韩一区二区 | 国产免费一区二区三区香蕉精 | 亚洲综合视频 | 99热这里只有精品一区二 | 一区二区三区中文字幕 | 精品伊人久久久 | 成人精品久久 | 亚洲一区二区综合 | 久久久视 | 久久国产精品免费一区二区三区 | 欧美阿v高清资源在线 | 五月天婷婷影院 | 久久久久国产一级毛片高清版 |