我有两个清单:
secondary_data = np.column_stack((user_secondary,_id_secondary))
primary_data = np.column_stack((user_primary,_id_primary))
接收另外两个列表。当我使用以下命令输出列表之间的差异时:
[x for x in secondary_data if x not in primary_data] + [x for x in primary_data if x not in secondary_data]
或以下命令:
filter(lambda x: x not in primary_data, secondary_data) + filter(lambda x: x not in primary_data, secondary_data)
我得到以下值:
[array(['id5', 'value'],
dtype='|S32')]
有没有办法让它只输出数组:
['id5', 'value']
谢谢!
答案 0 :(得分:0)
IIUC您可以使用numpy.ndarray
的{{3}}方法:
import numpy as np
a = [np.array(['id5', 'value'], dtype='|S32')]
result = a[0].tolist()
print(result)
[b'id5', b'value']
我正在使用python 3,因此在这种情况下我可以将字节转换为字符串:
result2 = list(map(bytes.decode, a[0].tolist()))
print(result2)
['id5', 'value']
答案 1 :(得分:0)
我明白了。这是一种方法:
p0_1 = [x for x in primary_data if x not in secondary_data]
p1_1 = ' '.join(map(str, p0_1))
答案 2 :(得分:0)
您是否担心可以在其他代码或显示屏中使用的值?
dtype
包含在repr
显示中,但不在str
显示中:
In [642]: x=np.ones((2,3),dtype='i,S4')
In [643]: x
Out[643]:
array([[(1, '1'), (1, '1'), (1, '1')],
[(1, '1'), (1, '1'), (1, '1')]],
dtype=[('f0', '<i4'), ('f1', '<S4')])
In [644]: print(x)
[[(1, '1') (1, '1') (1, '1')]
[(1, '1') (1, '1') (1, '1')]]
In [645]: print(str(x))
[[(1, '1') (1, '1') (1, '1')]
[(1, '1') (1, '1') (1, '1')]]
tolist
将数组转换为列表。在这种情况下,元组列表:
In [646]: x.tolist()
Out[646]: [[(1, '1'), (1, '1'), (1, '1')], [(1, '1'), (1, '1'), (1, '1')]]