python-- numpy--变换多维数组为一维数组(reshape、flatten、ravel)

三个实现方法

import numpy as np
a1 = [[1,2,3,4], [4,5,6,7]] # 二维lsit列表
# 转化为一维list列表
# 首先需要将list 转化为数组, 如果需要转化数据格式,可以利用dtype
a1 = np.array(a1, dtype="float64")
# 方法1:reshape
f1 = a1.reshape(-1).tolist()
print("reshape过后源数据为:\n", a1)

# 方法2:flatten
f2 = a1.flatten().tolist()
print("flatten过后源数据为:\n", a1)

# 方法3:ravel
f3 = a1.ravel().tolist()
print("ravel过后源数据为:\n", a1)

print("变换后的数据为")
print(f1, f2, f3)

结果为:

reshape过后源数据为:
 [[1. 2. 3. 4.]
 [4. 5. 6. 7.]]
flatten过后源数据为:
 [[1. 2. 3. 4.]
 [4. 5. 6. 7.]]
ravel过后源数据为:
 [[1. 2. 3. 4.]
 [4. 5. 6. 7.]]
变换后的数据为
[1.0, 2.0, 3.0, 4.0, 4.0, 5.0, 6.0, 7.0] [1.0, 2.0, 3.0, 4.0, 4.0, 5.0, 6.0, 7.0] [1.0, 2.0, 3.0, 4.0, 4.0, 5.0, 6.0, 7.0]

需要注意

如果使用reshape(1, -1)这个时候在转化为list时候,结果是两个,

import numpy as np
a1 = [[1,2,3,4], [4,5,6,7]] # 二维lsit列表
# 转化为一维list列表
# 首先需要将list 转化为数组, 如果需要转化数据格式,可以利用dtype
a1 = np.array(a1, dtype="float64")
# 方法1:reshape
f1 = a1.reshape(1, -1).tolist()
print("reshape过后数据为:\n", f1)

结果为

 [[1.0, 2.0, 3.0, 4.0, 4.0, 5.0, 6.0, 7.0]]

如果此时需要访问一维度,则需要啊
f1 = a1.reshape(1, -1).tolist()[0]

你可能感兴趣的:(python,numpy,python)