我有一大堆前2个标签:
n = [['20011' '20048']
['20011' '20048']
['20011' '20048']
['20011' '20048']]
我想以相反的顺序得到它们:
[['20048' '20011']
['20048' '20011']
['20048' '20011']]
如何在保持格式相同的情况下这样做?
代码到现在为止:
n = model1.classes_[order[:,-5:]]
print(n)
r = [p[::-1] for p in n]
print(r)
输出:
[array(['20048', '20011'],
dtype='|S5'), array(['20048', '20011'],
dtype='|S5'), array(['20048', '20011'],
dtype='|S5'), array(['20048', '20011'],
dtype='|S5')]
需要尝试删除dtypes
并仅保留反向数组。
答案 0 :(得分:3)
您的列表似乎缺少逗号,因此您实际上每个列表都有一个字符串,但如果要修改原始子列表,则可以使用list.reverse
inplace 执行此操作:
for sub in lists:
sub.reverse()
你实际上有一个numpy数组,所以假设它的格式正确,你可以:
In [50]: arr
Out[50]:
array([['20015', '20013', '20044', '20001', '20002'],
['20002', '20015', '20001', '20013', '20070']],
dtype='|S5')
In [51]: arr[:,::-1]
Out[51]:
array([['20002', '20001', '20044', '20013', '20015'],
['20070', '20013', '20001', '20015', '20002']],
dtype='|S5')
保存到文件中:
In [57]: arr[:,::-1].tofile("out.txt",sep=",")
In [58]: cat out.txt
20002,20001,20044,20013,20015,20070,20013,20001,20015,20002
如果你想要每行一行savetxt:
In [94]: np.savetxt("out.txt",arr[:,::-1],fmt="%s")
In [95]: cat out.txt
20002 20001 20044 20013 20015
20070 20013 20001 20015 20002
答案 1 :(得分:2)
l = [['a', 'b', 'c'], ['d', 'e', 'f']]
然后像这样简单的列表理解
[li[::-1] for li in l]
为您提供所需的输出:
[['c', 'b', 'a'], ['f', 'e', 'd']]
修改强>
当你改变你的问题时:
我们假设您现在拥有一系列数组:
import numpy as np
l2 = np.array([np.array(['a', 'b', 'c']), np.array(['d', 'e', 'f'])])
然后你可以执行以下操作来摆脱dtypes
:
map(list, l2[:, ::-1])
给你:
[['c', 'b', 'a'], ['f', 'e', 'd']]
但是从您的问题来看,仍然很难说出您想要的确切输出格式。
答案 2 :(得分:0)
作为列表理解的忠实拥护者,我的方法与Cleb相似,但是使用了与列表类相反的方法,而不是使用list_name[::-1]
方法。
l1 = [[1, 2, 3], [4, 5, 6], [7, 8, 9, 10]]
[l1[i].reverse() for i in range(len(l1))]
产量...
[[3, 2, 1], [6, 5, 4], [10, 9, 8, 7]]
关键是不要将理解力设置为等于任何值。