欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

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

发布时间:2023/12/20 编程问答 41 豆豆
生活随笔 收集整理的这篇文章主要介绍了 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中的数组变形操作01——reshape() 重塑, flatten()/reval() 扁平化的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。