【记录】如何将numpy数组转换为元组

问题:

我想要将下面这个数组:

 [[1527 1369   86   86]
  [ 573  590  709  709]
  [1417 1000   68   68]
  [1361 1194   86   86]]

转换为:

    [(726, 1219, 1281, 664),
    (1208, 1440, 1283, 1365), 
    (1006, 1483, 1069, 1421),
    (999, 1414, 1062, 1351),]

直接使用convert转换,会得到这样:

 (array ([152713698686],dtype = int32),
 array([573590709709],dtype = int32),
 array([141710006868],dtype = int32),
 array([136111948686],dtype = int32))
(array([701899671671],dtype = int32) ,)

数组方法 tolist 是将数组转换为列表的简便快捷方法。它可以正确处理多个维度:

In [92]: arr = np.arange(12).reshape(3,4)
In [93]: arr
Out[93]: 
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11]])
In [94]: arr.tolist()
Out[94]: [[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11]]

对于大多数诸如列表列表之类的目的与元组列表或元组的元组一样好。它们只是在可变性上有所不同。

例如 我想要对列表里的列表进行去重操作会返回报错信息的。列表元素是不可以被去重的,但是元组可以。

解决方法:

In [95]: [tuple(x) for x in arr.tolist()]
Out[95]: [(0, 1, 2, 3), (4, 5, 6, 7), (8, 9, 10, 11)]

你可能感兴趣的:(numpy,tuple,元组,数组)