国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - numpy中np.nditer、flags=[multi_index] 的用法說明

numpy中np.nditer、flags=[multi_index] 的用法說明

2021-10-26 10:01赤樂君 Python

這篇文章主要介紹了numpy中np.nditer、flags=['multi_index'] 的用法說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

在看CS231n的時候,有這么一行代碼

it = np.nditer(x, flags=['multi_index'], op_flags=['readwrite'])

查了查np.nditer原來是numpy array自帶的迭代器。這里簡單寫個demo解釋一下np.nditer的用法。

先構建一個3x4的矩陣

numpy中np.nditer、flags=[multi_index] 的用法說明

然后輸入命令

numpy中np.nditer、flags=[multi_index] 的用法說明

flags=['multi_index']表示對a進行多重索引,具體解釋看下面的代碼。

op_flags=['readwrite']表示不僅可以對a進行read(讀取),還可以write(寫入),即相當于在創建這個迭代器的時候,我們就規定好了有哪些權限。

迭代一下試一試

numpy中np.nditer、flags=[multi_index] 的用法說明

print it.multi_index表示輸出元素的索引,可以看到輸出的結果都是index。

it.iternext()表示進入下一次迭代,如果不加這一句的話,輸出的結果就一直都是(0, 0)。

補充:it = np.nditer(x, flags=['multi_index'], op_flags=['readwrite'])

在看cs221n代碼的時候碰到一行代碼。

numpy中np.nditer、flags=[multi_index] 的用法說明

it = np.nditer(x, flags=['multi_index'], op_flags=['readwrite'])

np.nditer()函數解析

class np.nditer()

參數:

op : ndarray或array_like的序列。迭代的數組。

flags : str的序列,可選。用于控制迭代器行為的標志。

“buffered”可在需要時啟用緩沖。

“c_index”導致跟蹤C順序索引。

“f_index”導致跟蹤Fortran-order索引。

“multi_index”導致跟蹤多個索引或每個迭代維度一個索引元組。

“common_dtype”會將所有操作數轉換為公共數據類型,并根據需要進行復制或緩沖。

“copy_if_overlap”使迭代器確定讀操作數是否與寫操作數重疊,并根據需要進行臨時復制以避免重疊。在某些情況下,可能會出現誤報(不必要的復制)。

“delay_bufalloc”延遲緩沖區的分配,直到進行reset()調用。允許“allocate”操作數在其值復制到緩沖區之前進行初始化。

“external_loop”導致給定的值是具有多個值的一維數組,而不是零維數組。

當同時使用“buffered”和“external”循環時,“grow-inner”允許值數組大小大于緩沖區大小。

“ranged”允許將迭代器限制為iterindex值的子范圍。

“refs_ok”允許迭代引用類型,例如對象數組。

“reduce_ok”允許迭代廣播的“readwrite”操作數,也稱為縮減操作數。

“zerosize_ok”允許itersize為零。

op_flags : str列表,可選。這是每個操作數的標志列表。至少,必須指定“readonly”,“readwrite”或“writeonly”中的一個。

“readonly”表示只讀取操作數。

“readwrite”表示將讀取和寫入操作數。

“writeonly”表示只會寫入操作數。

“no_broadcast”阻止操作數被廣播。

“contig”強制操作數數據是連續的。

“aligned”強制操作數數據對齊。

“nbo”強制操作數數據以本機字節順序排列。

如果需要,“copy”允許臨時只讀副本。

“updateifcopy”允許在需要時使用臨時讀寫副本。

如果在op參數中為None,則“allocate”會導致分配數組。

“no_subtype”阻止“allocate”操作數使用子類型。

“arraymask”表示此操作數是在寫入設置了“writemasked”標志的操作數時用于選擇元素的掩碼。迭代器不強制執行此操作,但是當從緩沖區寫回數組時,它只復制由此掩碼指示的元素。

'writemasked'表示只寫入所選'arraymask'操作數為True的元素。

“overlap_assume_elementwise”可用于標記僅在迭代器順序中訪問的操作數,以便在存在“copy_if_overlap”時允許不太保守的復制。

op_dtypes : dtype的dtype 或tuple,可選。操作數所需的數據類型。如果啟用了復制或緩沖,則數據將轉換為原始類型或從其原始類型轉換。

order: {‘C',‘F',‘A',‘K'},可選

控制迭代順序。'C'表示C順序,'F'表示Fortran順序,'A'表示'F'順序,如果所有數組都是Fortran連續,否則'C'順序,‘K'表示接近數組元素出現的順序在內存中盡可能。這也會影響“allocate”操作數的元素內存順序,因為它們被分配為與迭代順序兼容。默認為'K'。

casting :{‘no', ‘equiv', ‘safe', ‘same_kind', ‘unsafe'},可選。控制進行復制或緩沖時可能出現的數據轉換類型。建議不要將此設置為“unsafe”,因為它會對累積產生不利影響。

“no”表示完全不應強制轉換數據類型。

“equiv”表示只允許更改字節順序。

“safe”表示只允許保留值的強制轉換。

“same_kind”意味著只允許安全的類型或類型內的類型,如float64到float32。

“unsafe”表示可以進行任何數據轉換。

op_axes : 整數列表列表,可選。如果提供,則是每個操作數的int或None列表。操作數的軸列表是從迭代器的維度到操作數的維度的映射。可以為條目放置值-1,從而將該維度視為“newaxis”。

itershape : 整數元組,可選。迭代器的理想形狀。這允許“allocate”具有由op_axes映射的維度的操作數不對應于不同操作數的維度,以獲得該維度不等于1的值。

buffersize : int,可選。啟用緩沖時,控制臨時緩沖區的大小。設置為0表示默認值。

例子1:

默認情況下,nditer將視待迭代遍歷的數組為只讀對象(read-only),為了在遍歷數組的同時,實現對數組元素值得修改,必須指定op_flags=['readwrite']模式:

基本迭代參數flag=['f_index'/'mulit_index'],可輸出自身坐標it.index/it.multi_index。

“multi_index”表示對x進行表示對x進行多重索引。

print("%d <%s>" % (it[0], it.multi_index))表示輸出元素的索引,可以看到輸出的結果都是index。

下面分別舉例子說明:

import numpy as np
x = np.arange(6).reshape(2,3)
it = np.nditer(x, flags=['multi_index'], op_flags=['readwrite'])
while not it.finished:
 print("%d <%s>" % (it[0], it.multi_index))
 it.iternext()
# 0 <(0, 0)>
# 1 <(0, 1)>
# 2 <(0, 2)>
# 3 <(1, 0)>
# 4 <(1, 1)>
# 5 <(1, 2)>

it.iternext()表示進入下一次迭代,如果不加這一句的話,輸出的結果就一直都是0 <(0, 0)>且不間斷地輸出。

0 <(0, 0)>
0 <(0, 0)>
0 <(0, 0)>
0 <(0, 0)>
0 <(0, 0)>
0 <(0, 0)>
......
......

例子2:

import numpy as np
x = np.arange(6).reshape(2,3)
# 單維迭代
it = np.nditer(x, flags=['f_index'])
while not it.finished:
    print("%d <%s>" % (it[0], it.index))
    it.iternext()
# 0 <0>
# 1 <2>
# 2 <4>
# 3 <1>
# 4 <3>
# 5 <5>
import numpy as np
x = np.arange(6).reshape(2,3)
# 多維迭代
it = np.nditer(x, flags=['multi_index'])
while not it.finished:
    print("%d <%s>" % (it[0], it.multi_index))
    it.iternext()
# 0 <(0, 0)>
# 1 <(0, 1)>
# 2 <(0, 2)>
# 3 <(1, 0)>
# 4 <(1, 1)>
# 5 <(1, 2)>

例子3:

import numpy as np
x = np.arange(6).reshape(2,3)
# 列順序迭代
it = np.nditer(x, flags=['f_index'], order='F')
while not it.finished:
    print("%d <%s>" % (it[0], it.index), end=' | ')
    it.iternext()
    
# 0 <0> | 3 <1> | 1 <2> | 4 <3> | 2 <4> | 5 <5> |
import numpy as np
x = np.arange(6).reshape(2,3)
# 行順序迭代
it = np.nditer(x, flags=['f_index'], order='C')
while not it.finished:
    print("%d <%s>" % (it[0], it.index), end=' | ')
    it.iternext()
    
# 0 <0> | 1 <2> | 2 <4> | 3 <1> | 4 <3> | 5 <5> |

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持服務器之家。如有錯誤或未考慮完全的地方,望不吝賜教。

原文鏈接:https://www.jianshu.com/p/f2bd63766204

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 国产一区二区在线免费观看 | 成人免费视频网站在线看 | 国产一区二区三区久久 | 久久久久久成人 | 免费看国产片在线观看 | 色橹橹欧美在线观看视频高清 | 日韩激情一区二区 | 国产精品国产三级国产aⅴ中文 | 中文字幕一区三级久久日本 | 动漫泳衣美女 | 成人片免费看 | 久久久久国产精品免费免费搜索 | 黄色毛片网站在线观看 | www欧美| www免费在线观看 | 国产欧美在线观看 | 久久99精品国产麻豆婷婷洗澡 | 中文av在线播放 | 黄色在线免费看 | 日韩国产精品一区二区三区 | 欧美在线操 | 精品日韩一区二区 | 欧美日韩精品网站 | 吴梦梦到粉丝家实战华中在线观看 | 黄色一级片看看 | 日韩高清在线一区 | 色偷偷888欧美精品久久久 | 欧美成人精品在线 | 日韩av在线免费 | 一级全黄少妇性色生活片免费 | 日韩精品免费在线观看 | 一区二区中文字幕 | 中文字幕在线免费播放 | 日本精品视频在线观看 | 在线a电影 | 黄色成人在线观看视频 | 亚洲乱码日产精品一二三 | 国产午夜精品久久久久久久 | 久久久久久免费精品 | 国产精品自拍视频 | av短片在线观看 |