python将二维数组升为一维数组或二维降为一维方法实例
1. 二维(多维)数组降为一维数组
方法1: reshape()+concatenate 函数,
这个方法是间接法,利用 reshape() 函数的属性,间接的把二维数组转换为一维数组;
1 2 3 4 5 6 7 | import numpy as np mulArrays = np.array([[ 1 , 2 , 3 ], [ 4 , 5 , 6 ], [ 7 , 8 , 9 ]]) print ( list (np.concatenate(mulArrays.reshape(( - 1 , 1 ), order = "F" )))) Out[ 1 ]: [ 1 , 4 , 7 , 2 , 5 , 8 , 3 , 6 , 9 ] |
方法2: flatten() 函数,
推荐使用这个方法,这个方法是 numpy
自带的函数;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | # coding = utf-8 import numpy as np import random # 把二维数组转换为一维数组 t1 = np.arange( 12 ) print (t1) Out[ 0 ]: [ 0 1 2 3 4 5 6 7 8 9 10 11 ] t2 = t1.reshape( 3 , 4 ) print (t2) t3 = t2.reshape(t2.shape[ 0 ] * t2.shape[ 1 ], ) print (t3) t4 = t2.flatten() print (t4) |
运行效果如下图所示:
可以看到这两种方式都可以把二维数组转换为一维数组,但是推荐使用 flatten()
函数,该方法也可以将多维数组转换为一维数组。
输出结果为:[1, 2, 3, 4, 9, 8]
方法3: itertools.chain
1 2 3 4 5 6 7 | import numpy as np a = np.array([[ 1 , 2 ], [ 3 , 4 ], [ 9 , 8 ]]) # 使用库函数 from itertools import chain a_a = list (chain.from_iterable(a)) print (a_a) |
输出结果为:[1, 2, 3, 4, 9, 8]
方法4: sum()
1 2 | mulArrays = [[ 1 , 2 , 3 ], [ 4 , 5 , 6 ], [ 7 , 8 , 9 ]] print ( sum (mulArrays, [])) # [1, 2, 3, 4, 5, 6, 7, 8, 9] |
方法5:operator.add + reduce
1 2 3 4 | import operator from functools import reduce mulArrays = [[ 1 , 2 , 3 ], [ 4 , 5 , 6 ], [ 7 , 8 , 9 ]] print ( reduce (operator.add, mulArrays)) # [1, 2, 3, 4, 5, 6, 7, 8, 9] |
方法6:列表推导式
1 2 | mulArrays = [[ 1 , 2 , 3 ], [ 4 , 5 , 6 ], [ 7 , 8 , 9 ]] print ([i for arr in mulArrays for i in arr]) # [1, 2, 3, 4, 5, 6, 7, 8, 9] |
2. 一维数组升为 2 维数组
方法1:numpy 方法
利用函数 reshape
或者是 resize
。
使用 reshape
的时候需要注意 reshape
的结果不改变,因此适用于还要用到原数组的情况。
使用 resize
会改变原数组,因此适用于一定需要修改后的结果为值的情况。
1 2 3 4 5 6 7 8 | import numpy as np x = np.arange( 20 ) # 生成数组 print (x) result = x.reshape(( 4 , 5 )) # 将一维数组变成4行5列 原数组不会被修改或者覆盖 x.resize(( 2 , 10 )) # 覆盖原来的数据将新的结果给原来的数组 print (x) |
输出结果
[ 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]]
总结
到此这篇关于python将二维数组升为一维数组或二维降为一维的文章就介绍到这了,更多相关python二维数组升为一维数组内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

微信公众号搜索 “ 脚本之家 ” ,选择关注
程序猿的那些事、送书等活动等着你
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权/违法违规/事实不符,请将相关资料发送至 reterry123@163.com 进行投诉反馈,一经查实,立即处理!
最新评论