Numpy中的数组变形操作01——reshape() 重塑, flatten()/reval() 扁平化

reshape() 重塑, flatten()/reval() 扁平化

reshape()——>完成从低维到高维的转换
flatten()——>完成从高维到低维的转换 同时可以用ravel()实现

a. 基础用法举例

import numpy as np
help(np.ravel)

ravel(a, order=‘C’)
Return a contiguous flattened array.
a : array_like
Input array. The elements in a are read in the order specified by
order, and packed as a 1-D array.
order : {‘C’,‘F’, ‘A’, ‘K’}, optional

用reshape()创建二维数组arr

arr=np.arange(1,25.0).reshape((4,-1))  #tips:用-1直接计算另一个参数

array([[ 1., 2., 3., 4., 5., 6.],
[ 7., 8., 9., 10., 11., 12.],
[13., 14., 15., 16., 17., 18.],
[19., 20., 21., 22., 23., 24.]])

对其进行进行扁平化(打平):

arr_=arr.flatten()
arr_2=arr.ravel()

array([ 1., 2., 3., 4., 5., 6., 7., 8., 9., 10., 11., 12., 13.,
14., 15., 16., 17., 18., 19., 20., 21., 22., 23., 24.])

b. ravel和flatten的区别

raval()进行扁平化处理时没有复制原来数组,只在列主序打平时复制了原数组,返回的是一个数组的视图
faltten()在所有情况下打平时都复制了原来的数组,分配了新的内存

#flatten打平的情况下
arr_[0] = 50
print(arr_)
print(arr)

array([ 50., 2., 3., 4., 5., 6., 7., 8., 9., 10., 11., 12., 13.,
14., 15., 16., 17., 18., 19., 20., 21., 22., 23., 24.])
array([[ 1., 2., 3., 4., 5., 6.],
[ 7., 8., 9., 10., 11., 12.],
[13., 14., 15., 16., 17., 18.],
[19., 20., 21., 22., 23., 24.]])
flatten()不会影响到原本数组arr

#ravel打平情况下
arr_2[0] = 100
print(arr_2)
print(arr)

array([ 100., 2., 3., 4., 5., 6., 7., 8., 9., 10., 11., 12., 13.,
14., 15., 16., 17., 18., 19., 20., 21., 22., 23., 24.])
array([[ 100., 2., 3., 4., 5., 6.],
[ 7., 8., 9., 10., 11., 12.],
[13., 14., 15., 16., 17., 18.],
[19., 20., 21., 22., 23., 24.]])
ravel()会影响到原本数组arr

尽量使用flatten()函数打平数组。

你可能感兴趣的:(Numpy中的数组变形操作,python,numpy)