numpy 中的reshape,flatten,ravel 数据平展,多维数组变成一维数组

Posted onemorepoint

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了numpy 中的reshape,flatten,ravel 数据平展,多维数组变成一维数组相关的知识,希望对你有一定的参考价值。

numpy 中的reshape,flatten,ravel 数据平展,多维数组变成一维数组

import numpy as np

使用array对象


arr1=np.arange(12).reshape(3,4)
print(arr1)
print(type(arr1))
[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]
<class ‘numpy.ndarray‘>
  • flatten 展平
a=arr1.flatten() 
# 默认参数order=C,按照行进行展平;order=F,按照列进行展平,交叉展平;
#A 或K参数用的不多,顾不变多记,到时候找到会用即可
a[2]=1000
print(arr1)  # arr1 并没有改变,flatten 返回的是copy
a
[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]


array([   0,    1, 1000,    3,    4,    5,    6,    7,    8,    9,   10,
         11])
  • reshape 变换
arr1=np.arange(12).reshape(3,4)
b=arr1.reshape(-1)  #  b=arr1.reshape((-1)) 等同的效果意义 ,  
b[2]=1000
print(arr1)# 返回的是视图view
[[   0    1 1000    3]
 [   4    5    6    7]
 [   8    9   10   11]]
  • ravel 变换
arr1=np.arange(12).reshape(3,4)
c=arr1.ravel()
c
array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11])
c[2]=10001
arr1  # 返回的是视图view
array([[    0,     1, 10001,     3],
       [    4,     5,     6,     7],
       [    8,     9,    10,    11]])
  • resize
arr1=np.arange(12).reshape(3,4)
arr1.resize((4,3))  #  无返回值,即会对原始多维数组直接进行修改,也就是不能赋值
arr1
array([[ 0,  1,  2],
       [ 3,  4,  5],
       [ 6,  7,  8],
       [ 9, 10, 11]])

对matrix对象进行操作

# 使用matrix对象的时候,返回的仍是matrix,得不到想要的结果,不过该matrix仍然可以使用numpy中的一些方法对其操作,比如sum,min,max等等
d=np.matrix(np.arange(12).reshape(3,4))
d
matrix([[ 0,  1,  2,  3],
        [ 4,  5,  6,  7],
        [ 8,  9, 10, 11]])
d.flatten()# 
matrix([[ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11]])

以上是关于numpy 中的reshape,flatten,ravel 数据平展,多维数组变成一维数组的主要内容,如果未能解决你的问题,请参考以下文章

numpy中ravel函数flatten函数的功能及差异

keras中的Flatten和Reshape

numpy数组对象的维度操作

吴恩达深度学习中reshape图片数据的用法

Numpy | 12 数组操作

NumPy常见的数组操作整理