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填充数组

results matching ""

    No results matching ""