python3-numpy 数组操作--修改数组形状、翻转数组、修改数组维度、连接数组、分割数组、数组元素的添加与删除

1、修改数组形状

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

1.1 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)  # [0 1 2 3 4 5 6 7]
b = a.reshape(4,2)
print ('修改后的数组:')
print (b)
"""
原始数组 : 
[0 1 2 3 4 5 6 7]
修改后的数组:
[[0 1]
 [2 3]
 [4 5]
 [6 7]]
"""

1.2 numpy.ndarray.flat

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

a = np.arange(9).reshape(3, 3)
print('原始数组:')
for row in a:
    print(row)

# 对数组中每个元素都进行处理,可以使用flat属性,该属性是一个数组元素迭代器:
print('迭代后的数组:')
for element in a.flat:
    print(element, end=", ")
"""
原始数组:
[0 1 2]
[3 4 5]
[6 7 8]
迭代后的数组:
0, 1, 2, 3, 4, 5, 6, 7, 8, 
"""

1.3 numpy.ndarray.flatten

numpy.ndarray.flatten 返回一份数组拷贝,对拷贝所做的修改不会影响原始数组,格式如下:
ndarray.flatten(order=‘C’)
参数说明:
order:‘C’ – 按行,‘F’ – 按列,‘A’ – 原顺序,‘K’ – 元素在内存中的出现顺序。

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]
"""

1.4 numpy.ravel

numpy.ravel() 展平的数组元素,顺序通常是"C风格",返回的是数组视图,修改会影响原始数组
该函数接收两个参数:
numpy.ravel(a, order=‘C’)
参数说明:
order:‘C’ – 按行,‘F’ – 按列,‘A’ – 原顺序,‘K’ – 元素在内存中的出现顺序。

a = np.arange(8).reshape(2, 4)
print('原数组:')
print(a)
print('\n')
print('调用 ravel 函数之后:')
x = a.ravel()
print(x)
print('\n')
x[1] = 100
print(x)
print(a)
"""
原数组:
[[0 1 2 3]
 [4 5 6 7]]

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

[  0 100   2   3   4   5   6   7]
[[  0 100   2   3]
 [  4   5   6   7]]
"""

发现一个问题a.ravel(order=‘F’) 时修改数据不会影响原始数据

a = np.arange(8).reshape(2, 4)

print('原数组:')
print(a)
print('\n')

print('调用 ravel 函数之后:')
x = a.ravel(order = 'F')
print(x)
print('\n')
x[1] = 100
print(x)
print(a)
"""
原数组:
[[0 1 2 3]
 [4 5 6 7]]
调用 ravel 函数之后:
[0 4 1 5 2 6 3 7]
[  0 100   1   5   2   6   3   7]
[[0 1 2 3]
 [4 5 6 7]]
"""

2、翻转数组

函数描述
transpose对换数组的维度
ndarray.T对换数组的维度,和 self.transpose() 相同
rollaxis向后滚动指定的轴
swapaxes对换数组的两个轴

2.1 numpy.transpose

numpy.transpose 函数用于对换数组的维度,格式如下:
numpy.transpose(arr, axes)
参数说明:
arr:要操作的数组
axes:整数列表,对应维度,通常所有维度都会对换。

a = np.arange(12).reshape(3,4)
print('原数组: ')
print(a)
print('对换数组: ')
print(np.transpose(a))
"""
原数组: 
[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]
对换数组: 
[[ 0  4  8]
 [ 1  5  9]
 [ 2  6 10]
 [ 3  7 11]]
"""

2.2 ndarray.T

numpy.ndarray.T 类似 numpy.transpose:

a = np.arange(12).reshape(3, 4)

print('原数组:')
print(a)
print('\n')
print('转置数组:')
print(a.T)
"""
原数组:
[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]
转置数组:
[[ 0  4  8]
 [ 1  5  9]
 [ 2  6 10]
 [ 3  7 11]]
"""

2.3 numpy.rollaxis

numpy.rollaxis 函数向后滚动特定的轴到一个特定位置,格式如下:
numpy.rollaxis(arr, axis, start)
参数说明:
arr:数组
axis:要向后滚动的轴,其它轴的相对位置不会改变
start:默认为零,表示完整的滚动。会滚动到特定位置。

https://zhuanlan.zhihu.com/p/162874970

2.4 numpy.swapaxes

numpy.swapaxes 函数用于交换数组的两个轴,格式如下:
numpy.swapaxes(arr, axis1, axis2)
arr:输入的数组
axis1:对应第一个轴的整数
axis2:对应第二个轴的整数

https://zhuanlan.zhihu.com/p/162874970

3、修改数组维度

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

4、 连接数组

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

5、 分割数组

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

6、 数组元素的添加与删除

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

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

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值