python 二维列表/数组变成一维列表/数组

在实际应用的过程中,遇到列表或是数组的维数不同,需要变换的问题,如二维列表/数组变成了一维列表/数组

我的办法是
1、将二维的列表先变成二维的数组,然后用np.nditer()函数操作方便简单。
例如:

m = np.arange(6).reshape(2,3)
print("m,原始数组:\n",m)
n = []
for x in np.nditer(m):
    print(x)
    n.append(x)
print("n,新列表:",n)

输出:
原始数组:
[[0 1 2]
[3 4 5]]
0
1
2
3
4
5
n,新列表: [array(0), array(1),array(2), array(3), array(4), array(5)]

也可以对其中的数据改动,nditer 对象有另一个可选参数 op_flags,默认情况下,nditer 将视待迭代遍历的数组为只读对象(read-only),为了在遍历数组的同时,实现对数组元素值得修改,必须指定 read-write 或者 write-only 的模式。
例:

import numpy as np

a = np.arange(1,60,5).reshape(3,4)
print("原始数组:\n",a)
b = []
for x in np.nditer(a,op_flags=['readwrite']):
    x[...] = 2*x
    print(x[...])
    b.append(x[...])
print("修改后的数组:\n",a)
print("b列表:",b)

输出:
原始数组:
[[ 1 6 11 16]
[21 26 31 36]
[41 46 51 56]]
2
12
22
32
42
52
62
72
82
92
102
112
修改后的数组:
[[ 2 12 22 32]
[ 42 52 62 72]
[ 82 92 102 112]]
b列表: [array(2), array(12), array(22), array(32),array(42), array(52), array(62), array(72), array(82), array(92),array(102), array(112)]

2、利用numpy的flatten()

import numpy as np
a = [[1, 4], [3, 2], [5, 6]]
a = np.array(a).flatten().tolist()
print(a)

输出:
[1, 4, 2, 3, 5, 6]

3、常规一行写法

a = [[1, 4], [2], [3, 5, 6]]
a = [j for i in a for j in i]
print(a)

输出:
[1, 4, 2, 3, 5, 6]

更多见:
https://blog.csdn.net/weixin_43868107/article/details/102647760
https://blog.csdn.net/weixin_38705903/article/details/102882167

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值