📜  Python中的numpy.ndarray.flat

📅  最后修改于: 2020-06-17 04:38:07             🧑  作者: Mango

numpy.ndarray.flat() :  N维数组上的1_D迭代器。它不是Python的内置迭代器对象的子类,否则它是numpy.flatiter实例。

参数:

index: [tuple(int)]要迭代的值的索引

返回:

一维数组迭代器

 

代码1:2D数组 

# Python程序说明ndarray.flat()的工作 
  
import numpy as geek  
  
# 处理2D数组的1D迭代  
array = geek.arange(15).reshape(3, 5) 
print("2D数组 : \n",array ) 
  
# 使用flat():1D迭代器超出范围 
print("\n使用数组 : ", array.flat[2:6]) 
  
# 使用flat()打印一维重复数组 
print("\n数组的一维表示 : \n ->", array.flat[0:15]) 

输出: 

2D数组 : 
 [[ 0  1  2  3  4]
 [ 5  6  7  8  9]
 [10 11 12 13 14]]

使用数组 :  [2 3 4 5]

数组的一维表示 : 
 -> [ 0  1  2 ..., 12 13 14]

代码2:更改数组的值 

# Python程序说明ndarray.flat()的工作 
  
import numpy as geek  
  
# 处理2D数组的1D迭代  
array = geek.arange(15).reshape(3, 5) 
print("2D数组 : \n",array ) 
  
# 所有元素设置为1
array.flat = 1
print("\n所有值设为1 : \n", array) 
  
array.flat[3:6] = 8
array.flat[8:10] = 9
print("更改范围内的值 : \n", array)  

输出: 

2D数组 : 
 [[ 0  1  2  3  4]
 [ 5  6  7  8  9]
 [10 11 12 13 14]]

所有值设为1 : 
 [[1 1 1 1 1]
 [1 1 1 1 1]
 [1 1 1 1 1]]

更改范围内的值 : 
 [[1 1 1 8 8]
 [8 1 1 9 9]
 [1 1 1 1 1]]

numpy.flatiter实际上是什么?
对于任何数组x,flatiter迭代器均由x.flat返回。它允许以for循环或通过调用其next方法在N维数组上进行迭代(以行​​为主)。

代码3:numpy.flatitter()的作用

# Python程序说明ndarray.flat()的工作  
  
import numpy as geek  
  
# 处理2D数组的1D迭代  
array = geek.arange(15).reshape(3, 5) 
print("2D数组 : \n",array ) 
  
print("\nID数组 : \n", array.flat[0:15])          
  
print("\n数组类型,flat() : ", type(array.flat)) 
  
for i in array.flat: 
    print(i, end = ' ') 

输出:

2D数组 : 
 [[ 0  1  2  3  4]
 [ 5  6  7  8  9]
 [10 11 12 13 14]]

ID数组 : 
 [ 0  1  2 ..., 12 13 14]

数组类型,flat() :  
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14