我有一个np数组,每行包含9个元素。
data = [[array([['C', 'F', 'G']], dtype=object),
array([['C', 'F', 'G']], dtype=object),
array([['B', 'G', 'H']], dtype=object),
array([['C', 'H', None]], dtype=object),
array([['E', 'I', None]], dtype=object),
array([['A', 'E', None]], dtype=object),
array([['E', 'J', None]], dtype=object),
array([['B', 'C', 'I']], dtype=object),
array([['D', None, None]], dtype=object)],
[array([['C', 'F', 'G']], dtype=object),
array([['C', 'F', 'G']], dtype=object),
array([['B', 'G', 'H']], dtype=object),
array([['C', 'H', None]], dtype=object),
array([['E', 'I', None]], dtype=object),
array([['E', 'J', None]], dtype=object),
array([['A', 'E', None]], dtype=object),
array([['B', 'C', 'I']], dtype=object),
array([['D', None, None]], dtype=object)],
[array([['C', 'F', 'G']], dtype=object),
array([['C', 'F', 'G']], dtype=object),
array([['B', 'G', 'H']], dtype=object),
array([['C', 'H', None]], dtype=object),
array([['E', 'I', None]], dtype=object),
array([['B', 'C', 'I']], dtype=object),
array([['A', 'E', None]], dtype=object),
array([['E', 'J', None]], dtype=object),
array([['D', None, None]], dtype=object)]]
我想将数组从9列调整为3列。第1至第3是组1,第4至第6是组2,第7至9是组3。例如:
data[0,]
output:
#Duplicates were also deleted
[['B','C','F','G','H'],['A','C','E','H','I'],['B','C','D','E','I','J']]
谢谢。
您的data
具有不必要的尺寸,并且混合了numpy数组和列表。最好将数据存储在full_array
之类的文件中。
>>> import numpy as np
>>> from numpy import array
>>> full_array = np.squeeze(np.array(data))
>>> full_array
array([[['C', 'F', 'G'],
['C', 'F', 'G'],
['B', 'G', 'H'],
['C', 'H', None],
['E', 'I', None],
['A', 'E', None],
['E', 'J', None],
['B', 'C', 'I'],
['D', None, None]],
[['C', 'F', 'G'],
['C', 'F', 'G'],
['B', 'G', 'H'],
['C', 'H', None],
['E', 'I', None],
['E', 'J', None],
['A', 'E', None],
['B', 'C', 'I'],
['D', None, None]],
[['C', 'F', 'G'],
['C', 'F', 'G'],
['B', 'G', 'H'],
['C', 'H', None],
['E', 'I', None],
['B', 'C', 'I'],
['A', 'E', None],
['E', 'J', None],
['D', None, None]]], dtype=object)
>>> reshaped = full_array.reshape(full_array.shape[0], 3, -1)
>>> reshaped
array([[['C', 'F', 'G', 'C', 'F', 'G', 'B', 'G', 'H'],
['C', 'H', None, 'E', 'I', None, 'A', 'E', None],
['E', 'J', None, 'B', 'C', 'I', 'D', None, None]],
[['C', 'F', 'G', 'C', 'F', 'G', 'B', 'G', 'H'],
['C', 'H', None, 'E', 'I', None, 'E', 'J', None],
['A', 'E', None, 'B', 'C', 'I', 'D', None, None]],
[['C', 'F', 'G', 'C', 'F', 'G', 'B', 'G', 'H'],
['C', 'H', None, 'E', 'I', None, 'B', 'C', 'I'],
['A', 'E', None, 'E', 'J', None, 'D', None, None]]], dtype=object)
>>> answer = [list(filter(bool, set(a))) for b in reshaped for a in b]
>>> answer
[['H', 'F', 'C', 'G', 'B'], ['E', 'H', 'C', 'A', 'I'], ['E', 'C', 'I', 'D', 'J', 'B'], ['H', 'F', 'C', 'G', 'B'], ['E', 'H', 'C', 'J', 'I'], ['E', 'C', 'A', 'D', 'I', 'B'], ['H', 'F', 'C', 'G', 'B'], ['E', 'H', 'C', 'I', 'B'], ['E', 'A', 'D', 'J']]