微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Python numpy 入门系列 11 数组操作(修改数组形状 )

Numpy 数组操作

Numpy 中包含了一些函数用于处理数组,大概可分为以下几类:


修改数组形状

函数 描述
reshape 不改变数据的条件下修改形状
flat 数组元素迭代器
flatten 返回一份一维数组拷贝(一维数组),对拷贝所做的修改不会影响原始数组
ravel 返回展开数组(一维数组)

 

numpy.reshape

numpy.reshape 函数可以在不改变数据的条件下修改形状,格式如下:

numpy.reshape(arr, newshape, order='C')
  • arr:要修改形状的数组
  • newshape:整数或者整数数组,新的形状应当兼容原有形状
  • order:'C' -- 按行,'F' -- 按列,'A' -- 原顺序,'k' -- 元素在内存中的出现顺序。

实例

import numpy as np
 
a = np.arange(8)
print ('原始数组:')
print (a)
print ('\n')
 
b = a.reshape(4,2)
print ('修改后的数组:')
print (b)
输出结果如下:
原始数组:
[0 1 2 3 4 5 6 7]

修改后的数组:
[[0 1]
 [2 3]
 [4 5]
 [6 7]]

 

numpy.ndarray.flat

numpy.ndarray.flat 是一个数组元素迭代器,实例如下:

实例

import numpy as np
 
a = np.arange(9).reshape(3,3) 
print ('原始数组:')
for row in a:
    print (row)
 
#对数组中每个元素都进行处理,可以使用flat属性,该属性一个数组元素迭代器:
print ('迭代后的数组:')
for element in a.flat:
    print (element)
输出结果如下:
原始数组:
[0 1 2]
[3 4 5]
[6 7 8]
迭代后的数组:
0
1
2
3
4
5
6
7
8

 

numpy.ndarray.flatten

返回一个折叠成一维的数组。但是该函数只能适用于numpy对象,即array或者mat,普通的list列表是不行的。

numpy.ndarray.flatten 返回一份数组拷贝,对拷贝所做的修改不会影响原始数组,格式如下:

ndarray.flatten(order='C')

参数说明:

  • order:'C' -- 按行,'F' -- 按列,'A' -- 原顺序,'K' -- 元素在内存中的出现顺序。

实例

import numpy as np
 
a = np.arange(8).reshape(2,4)
 
print ('原数组:')
print (a)
print ('\n')
# 认按行
 
print ('展开的数组:')
print (a.flatten())
print ('\n')
 
print ('以 F 风格顺序展开的数组:')
print (a.flatten(order = 'F'))

 输出结果如下:

原数组:
[[0 1 2 3]
 [4 5 6 7]]


展开的数组:
[0 1 2 3 4 5 6 7]


 F 风格顺序展开的数组:
[0 4 1 5 2 6 3 7]

 

numpy.ravel

numpy.ravel() 展平的数组元素,顺序通常是"C风格",返回的是数组视图(view,有点类似 C/C++引用reference的意味),修改会影响原始数组。

函数接收两个参数:

numpy.ravel(a, order='C')

参数说明:

  • order:'C' -- 按行,'F' -- 按列,'A' -- 原顺序,'K' -- 元素在内存中的出现顺序。

实例

import numpy as np
 
a = np.arange(8).reshape(2,4)
 
print ('原数组:')
print (a)
print ('\n')
 
print ('调用 ravel 函数之后:')
print (a.ravel())
print ('\n')
 
print ('以 F 风格顺序调用 ravel 函数之后:')
print (a.ravel(order = 'F'))
 

输出结果如下:

原数组:
[[0 1 2 3]
 [4 5 6 7]]


调用 ravel 函数之后:
[0 1 2 3 4 5 6 7]


 F 风格顺序调用 ravel 函数之后:
[0 4 1 5 2 6 3 7]

 
flatten 方法返回的是一个数组的拷贝, 类似于copy()
ravel 返回的是一个数组的视图,类似于view()
 

 


REF

https://www.cnblogs.com/mzct123/p/8659193.html  (numpy flatten ravel)
https://blog.csdn.net/weixin_43960668/article/details/114979389 (numpy flatten ravel)

https://www.runoob.com/numpy/numpy-array-manipulation.html

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐