当前位置:网站首页>Notes | numpy-10 Iterative array
Notes | numpy-10 Iterative array
2022-07-03 04:49:00 【CY3761】
#%% md
NumPy Iterator object numpy.nditer Provides a flexible way to access one or more array elements .
The basic task of iterator is to access array elements .
So let's use arange() Function to create a 2X3 Array , And use nditer Iterate over it b
#%%
import numpy as np
a = np.arange(6).reshape(2, 3) # 2r3c
a
#%%
# Output through iteration
# The above example is not a standard C perhaps Fortran The order , The order of selection is consistent with the array memory layout , This is done to improve the efficiency of access , The default is row order first (row-major order, Or rather, C-order)
for _ in np.nditer(a): # First floor for You can output the entire array | Output line by line ( level )
print(_, end=', ')
#%%
a.T # reverse
#%%
# It reflects that by default, you only need to access each element , Regardless of their specific order . We can see this by iterating the transpose of the above array , And with C Sequential access array transposed copy Compare the ways
# a and a.T The traversal order is the same , That is, they are stored in the same order in memory
for _ in np.nditer(a.T): # First floor for You can output the entire array | have no feelings The order of output is the same | Using or a This iterates
print(_, end=', ')
#%%
# however a.T.copy(order = 'C') The traversal results are different , That's because it's different from the first two storage methods , The default is to access by line
for _ in np.nditer(a.T.copy(order='C')): # First floor for You can output the entire array | The order of output is different | This is output line by line ( level ) This is using replication ( Copy sort changes )
print(_, end=', ')
#%%
# Control traversal order
# for x in np.nditer(a, order='F'):Fortran order, That is, sequence first
# for x in np.nditer(a.T, order='C'):C order, That is, line order takes precedence
#%%
import numpy as np
a = np.arange(0, 60, 5) # 0~60( Not included 60) step 5
a
#%%
a = a.reshape(3, 4) # 3r4c
a
#%%
b = a.T
b # 4r3c
#%%
for _ in np.nditer(b):
print(_, end=', ') # vertical ( Column )
#%%
c = b.copy(order='C')
c
#%%
for _ in np.nditer(c):
print(_, end=', ') # level ( That's ok )
#%%
c = b.copy(order='F')
c
#%%
for _ in np.nditer(c):
print(_, end=', ') # vertical ( Column )
#%%
# You can explicitly set , Mandatory nditer Objects use some sort of order
for _ in np.nditer(a, order='C'):
print(_, end=', ') # level ( That's ok )
#%%
for _ in np.nditer(a, order='F'):
print(_, end=', ') # vertical ( Column )
#%% md
## Change the value of the element in the array
nditer Object has another optional parameter op_flags. By default ,nditer The array to be iterated is considered as a read-only object (read-only), In order to traverse the array at the same time , The implementation of array elements is worth modifying , Must specify read-write perhaps write-only The pattern of
#%%
import numpy as np
for _ in np.nditer(a, op_flags=['readwrite']):
_[...] = 2 * _ # All elements multiply 2 operation
a
#%% md
## Use an external loop
#%%
# nditer Class constructor has flags Parameters , It can accept the following values
""" Parameters describe c_index Can track C Index of order | That's ok f_index Can track Fortran Index of order | Column multi_index Each iteration can track one index type external_loop The given value is a one-dimensional array with multiple values , Instead of a zero dimensional array """
#%%
for _ in np.nditer(a, flags=['external_loop'], order='F'):
print(_, end=', ')
#%% md
## Broadcast iteration
#%%
# If two arrays are broadcast ,nditer Composite objects can iterate over them at the same time . Hypothetical array a The dimensions are 3X4, Array b The dimensions are 1X4 , Then use the following iterators ( Array b Broadcast to a Size )
import numpy as np
a = np.arange(0, 60, 5).reshape(3, 4)
a
#%%
b = np.array([1, 2, 3, 4], dtype=int)
b
#%%
# To iterate This makes it easy to check the calculation method
for x,y in np.nditer([a, b]):
print('x = %d, y = %d' % (x, y))
#%%
边栏推荐
- 2022 tea master (intermediate) examination questions and tea master (intermediate) examination skills
- Retirement plan fails, 64 year old programmer starts work again
- 论文阅读_中文医疗模型_ eHealth
- Employee attendance management system based on SSM
- MC Layer Target
- 论文阅读_中文NLP_ELECTRA
- 关于开学的准备与专业认知
- 【XSS绕过-防护策略】理解防护策略,更好的绕过
- [PCL self study: filtering] introduction and use of various filters in PCL (continuously updated)
- 联发科技2023届提前批IC笔试(题目)
猜你喜欢

Learn to use the idea breakpoint debugging tool

Introduction to JVM principle

On typescript and grammar

Number of uniform strings of leetcode simple problem

Valentine's day limited withdrawal guide: for one in 200 million of you

Leetcode simple question: check whether two string arrays are equal

Small sample target detection network with attention RPN and multi relationship detector (provide source code, data and download)
![[XSS bypass - protection strategy] understand the protection strategy and better bypass](/img/72/d3e46a820796a48b458cd2d0a18f8f.png)
[XSS bypass - protection strategy] understand the protection strategy and better bypass

Preparation for school and professional cognition

论文阅读_ICD编码_MSMN
随机推荐
Concurrent operation memory interaction
2.14 summary
Shuttle + Alluxio 加速内存Shuffle起飞
第十九届浙江省 I. Barbecue
Leetcode simple problem delete an element to strictly increment the array
MPM model and ab pressure test
I've been in software testing for 8 years and worked as a test leader for 3 years. I can also be a programmer if I'm not a professional
Market status and development prospect prediction of the global fire alarm sensor industry in 2022
JVM原理简介
Cross platform plug-in flutter for displaying local notifications_ local_ notifications
ZABBIX monitoring of lamp architecture (3): zabbix+mysql (to be continued)
Hj35 serpentine matrix
Golang -- realize file transfer
并发操作-内存交互操作
2022 new examination questions for the main principals of hazardous chemical business units and examination skills for the main principals of hazardous chemical business units
[set theory] binary relationship (special relationship type | empty relationship | identity relationship | global relationship | divisive relationship | size relationship)
《牛客刷verilog》Part II Verilog进阶挑战
Flutter monitors volume to realize waveform visualization of audio
有道云笔记
Hire cashier (differential constraint)