Numpy - ndarray变换
对于创建后的ndarray数组,可以对其进行维度变换、元素类型变换和相关的转换操作。
1、维度变换:
方法 | 说明 |
---|---|
.reshape(shape) |
不改变数组元素,返回一个shape形状的新数组,原数组不变 |
.resize(shape) |
与.reshape(shape) 功能一致,但修改原数组 |
.swapaxes(ax1,ax2) |
将数组的其中两个维度进行顺序调换 |
.flatten() |
对数组进行降维,返回折叠后的新的一维数组,原数组不变 |
.astype(new_type) |
对数组中的元素进行类型变化,返回一个新数组,原数组不变 |
. transpose(*axes) |
返回矩阵的转置 |
. ravel([order]) |
返回展开后的一维数组 |
reshape:
import numpy as np
a=np.arange(20)
#原数组不变,返回一个新的数组
b=a.reshape([4,5])
print('a:',a)
print('\nb:',b)
输出如下:
a: [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19]
b: [[ 0 1 2 3 4]
[ 5 6 7 8 9]
[10 11 12 13 14]
[15 16 17 18 19]]
resize
:
#修改原数组,但不返回新的数组,否则内存中将存在两份数据
a=np.arange(20)
b=a.resize([4,5])
print('a:',a)
print('\nb:',b)
输出如下:
a: [[ 0 1 2 3 4]
[ 5 6 7 8 9]
[10 11 12 13 14]
[15 16 17 18 19]]
b: None
swapaxes
:
#.swapaxes(ax1,ax2) 将数组n个维度中两个维度进行调换,不改变原数组
a=np.arange(20)
a.resize([4,5])
print('before a:',a)
#对换后原来的数组不改变,返回新的数组,上述对换的本意是将行和列进行对换
b=a.swapaxes(0,1)
print('\nafter a:',b)
输出如下:
before a: [[ 0 1 2 3 4]
[ 5 6 7 8 9]
[10 11 12 13 14]
[15 16 17 18 19]]
after a: [[ 0 5 10 15]
[ 1 6 11 16]
[ 2 7 12 17]
[ 3 8 13 18]
[ 4 9 14 19]]
flatten:
#.flatten() : 对数组进行降维,返回折叠后的一维数组,原数组不变
b=a.flatten()
print(a)
print('\n',b)
输出如下:
[[ 0 1 2 3 4]
[ 5 6 7 8 9]
[10 11 12 13 14]
[15 16 17 18 19]]
[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19]
transpose:
#.transpose:返回矩阵的装置
a=np.arange(20)
a.resize([4,5])
print('before a:',a)
b=a.transpose(1,0)
print('\nafter a:',b)
c=a.transpose()
print('\nafter a:',c)
输出如下:
before a: [[ 0 1 2 3 4]
[ 5 6 7 8 9]
[10 11 12 13 14]
[15 16 17 18 19]]
after a: [[ 0 5 10 15]
[ 1 6 11 16]
[ 2 7 12 17]
[ 3 8 13 18]
[ 4 9 14 19]]
after a: [[ 0 5 10 15]
[ 1 6 11 16]
[ 2 7 12 17]
[ 3 8 13 18]
[ 4 9 14 19]]
ravel:
#ravel 返回展开后的一维数组
a=np.arange(20)
a.resize([4,5])
print('before a:',a)
b=a.ravel()
print('\n',b)
输出如下:
before a: [[ 0 1 2 3 4]
[ 5 6 7 8 9]
[10 11 12 13 14]
[15 16 17 18 19]]
[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19]
2、元素类型变换
元素类型变换主要采用是用astype或者dtype直接赋值,在[第四章:Numpy - ndarray的dtype]中已经有详细介绍,可参考。
3、数组转换方法
所谓数组的转换方法类似于在原有的数组上创建一个新的数组,或者修改原数组的内容,以下是相关方法的总结:
常用方法 | 功能 |
---|---|
ndarray.item(*args) | 复制数组中的一个元素,并返回 |
ndarray.tolist() | 将数组转换成python标准list |
numpy.tile(A, reps) | 根据给定的reps重复数组A,和repeat不同,repeat是重复元素,该方法是重复数组。 |
ndarray.tostring([order]) | 构建一个包含ndarray的原始字节数据的字节字符串 |
ndarray.tobytes([order]) | 功能同tostring |
ndarray.byteswap(inplace) | 将ndarray中每个元素中的字节进行大小端转换 |
ndarray.copy([order]) | 复制数组并返回(深拷贝) |
ndarray.fill(value) | 使用值value填充数组 |