可以将 Ndarray 转换为一维数组有两种方法: flatten()Ravel() -

import numpy as nmp  
P = nmp.array( [ (1,8,4,5),(4,3,5,1) ] )  
#OUTPUT:  
print( P.flatten() )  
# [ 1,8,4,5,4,3,5,1 ]   
print ( P.ravel() )  
# [ 1,8,4,5,4,3,5,1 ]

这里的问题是:为什么有两个不同的角色来执行相同的工作?

Flatten() 和 Ravel() 的区别

P.ravel():

  • 仅返回原始数组的引用/视图
  • 如果更改数组,我们将能够看到原始数组的值也发生了变化。
  • Ravel 比 flatten() 更快,因为它不占用任何内存。
  • Ravel 是库级别的库级别函数。

P.flatten():

  • 返回初始数组的副本
  • 当更改此数组的值时,原始数组的值不会更改。
  • Flatten() 比 ravel() 快得多,因为它占用内存。
  • Flatten 是 ndarray 使用的一种方法。

下面使用这段代码来看看 flatter() 和 ravel() 函数之间的区别。

import numpy as nmp  

# Here, we will create a numpy array  
P = nmp.array([(3,4,5,6),(5,3,6,7)])  

# Now, we will print the array a  
print ("Original array:
 ")  
print(P)  

# For checking the dimension of array (dimension = 2 and type is numpy.ndarray )  
print ("Dimension of array: " , (P.ndim))  


print("
 The output for RAVEL 
")  
# Here, we will convert ndarray to 1D array  
Q = P.ravel()  

# As the ravel() only passes a view of the original array to array 'Q'  
print(Q)  
Q[0]=1000  
print(Q)  

# We can note here that value of the original array 'P' at also P[0][0] becomes 1000  
print(P)  

# Just for checking the dimension i.e. 1 and type is same numpy.ndarray )  
print ("Dimension of array" ,(Q.ndim))  

print("
 The output for FLATTEN 
")  

# Here, we will convert ndarray to 1D array  
R = P.flatten()  

# Flatten passes copy of original array to 'R'  
print(R)  
R[0] = 0  
print(R)  

# Here, we can note that by changing the value of R   
# there is no affect on value of original array 'P'  
print(P)  

print ("Dimension of array " , (R.ndim))

运行结果:

Original array:

[[3 4 5 6]
 [5 3 6 7]]
Dimension of array:  2

 The output for RAVEL 

[3 4 5 6 5 3 6 7]
[1000    4    5    6    5    3    6    7]
[[1000    4    5    6]
 [   5    3    6    7]]
Dimension of array 1

 The output for FLATTEN 

[1000    4    5    6    5    3    6    7]
[0 4 5 6 5 3 6 7]
[[1000    4    5    6]
 [   5    3    6    7]]
Dimension of array  1
欢迎任何形式的转载,但请务必注明出处,尊重他人劳动成果。
转载请注明:文章转载自 有区别网 [http://www.vsdiffer.com]
本文标题:Numpy Flatten() 和 Ravel() 函数的区别
本文链接:https://www.vsdiffer.com/vs/flatten-vs-ravel-numpy-functions.html
免责声明:以上内容仅是站长个人看法、理解、学习笔记、总结和研究收藏。不保证其正确性,因使用而带来的风险与本站无关!如本网站内容冒犯了您的权益,请联系站长,邮箱: ,我们核实并会尽快处理。