两者所要实现的功能是一致的(将多维数组降为一维),

两者的区别在于返回拷贝(copy)还是返回视图(view),numpy.flatten() 返回一份拷贝,对拷贝所做的修改不会影响(reflects)原始矩阵,

而numpy.ravel()返回的是视图(view),会影响(reflects)原始矩阵。

1、二者的功能

>>> x = np.array([[1, 2], [3, 4]])
>>> x
array([[1, 2],
       [3, 4]])
>>> x.flatten()
array([1, 2, 3, 4])
>>> x.ravel()
array([1, 2, 3, 4])
                    两者默认均是行序优先
>>> x.flatten('F')
array([1, 3, 2, 4])
>>> x.ravel('F')
array([1, 3, 2, 4])

>>> x.reshape(-1)
array([1, 2, 3, 4])
>>> x.T.reshape(-1)
array([1, 3, 2, 4])

 

2、二者的区别

>>> x = np.array([[1, 2], [3, 4]])
>>> x.flatten()[1] = 100
>>> x
array([[1, 2],
       [3, 4]])            # flatten:返回的是拷贝
>>> x.ravel()[1] = 100
>>> x
array([[  1, 100],
       [  3,   4]])

 

【Reference】

1、https://blog.csdn.net/lanchunhui/article/details/50354978

相关文章:

  • 2023-02-20
  • 2022-12-23
  • 2021-10-05
  • 2021-10-15
  • 2021-08-31
  • 2021-07-27
  • 2022-12-23
  • 2021-05-20
猜你喜欢
  • 2021-11-25
  • 2021-12-01
  • 2021-05-16
  • 2022-01-20
  • 2022-12-23
  • 2021-09-17
  • 2022-12-23
相关资源
相似解决方案