通過某一些條件去「選擇」相關的元素,choose的操作會比自己使用for-if-else效率要高,類似的還有select函式
1、choose()函式的定義
def choose(a, choices, out=none, mode=『raise』):
說的通俗一點,就是引數a這個陣列的值不能超過choices陣列的維度的最大值,然後a這個陣列中每乙個位置的數,代表的 是choices陣列中的元素的索引,比如:
呼叫choose會產生乙個和control陣列一樣大小的陣列,這個陣列的每個元素是什麼呢?control第乙個是1,代表在[10,11,12]中的第二個元素,即11,然後第二個是0,即第乙個元素,10,以此類推。import numpy as np
control = np.array([[1,0,1],
[2,1,0],
[1,2,2]])
np.choose(control, [10, 11, 12])
結果是i0 = np.array([[0,1,2],
[3,4,5],
[6,7,8]])
i2 = np.array([[20,21,22],
[23,24,25],
[26,27,28]])
control = np.array([[1,0,1],
[2,1,0],
[1,2,2]])
np.choose(control, [i0, 10, i2])
即control的第一行第一列的元素是i0陣列的第一行第一列的數,第二行第一列的元素是i2陣列中的第二行第一列的數。array([[10, 1, 10],
[23, 10, 5],
[10, 27, 28]])
接下來給出兩個覺得很不錯的操作
將陣列中所有小於 10 的值變成了 10
下面的例子將陣列中所有小於 10 的值變成了 10,大於 15 的值變成了 15。in [4]:
a = np.array([[ 0, 1, 2],
[10,11,12],
[20,21,22]])
a < 10
out[4]:
array([[ true, true, true],
[false, false, false],
[false, false, false]], dtype=bool)
in [5]:
np.choose(a < 10, (a, 10))
out[5]:
array([[10, 10, 10],
[10, 11, 12],
[20, 21, 22]])
in [6]:
a = np.array([[ 0, 1, 2],
[10,11,12],
[20,21,22]])
lt = a < 10
gt = a > 15
choice = lt + 2 * gt
choice
out[6]:
array([[1, 1, 1],
[0, 0, 0],
[2, 2, 2]])
in [7]:
np.choose(choice, (a, 10, 15))
out[7]:
array([[10, 10, 10],
[10, 11, 12],
[15, 15, 15]])
Python學習筆記 13
本節主要有 集合 集合中只能存放不可變物件 集合中的元素無序且唯一存在,不重複 使用建立集合 s print s type s 使用set建立集合 s 字典s s set 集合s print type s 通過set 來將字典轉化為集合時,只會將鍵儲存在集合中 s set print s s set...
python學習筆記13
通過匯入安裝的第三方csv包的模組可以對csv檔案進行讀寫。讀取的基本方法為方法.reader f 讀取檔案後也可通過函式namedtuple建立的類對映檔案列名,也可以通過方法.dictreader f 讀取csv檔案到字典表。寫入的基本方法為方法.writer f writerow header...
Python學習筆記(13) 類
物件導向程式設計是最有效的軟體編寫方法之一。在物件導向程式設計中,你編寫表示現實世界中的事物和情景的類,並基於這些類來建立物件。編寫類時,你定義一大類物件都有的通用行為。基於類建立物件時,每個物件都自動具備這種通用行為,然後可根據需要賦予每個物件獨特的個性。類 class dog def init ...