从列表中排序子列表,然后将它们保存为子列表
Sort sublists from a list and then saving them as sublists
b = np.array([[1, -20.559, -5.4188, -4.0916],[1, -22, -5.9432,-4.0916],[1, -20.559, -5.4188,
-4.0916],[1, -20.559, -5.4188, -4.0916],[2, -20.559, -5.4188, -4.0916],[1, -20.559, -5.4188,
-4.0916],[3, -20.559, -5.4188, -4.0916], [2, -20.559, -5.4188, -4.0916],[1, -20.559,
-5.4188, -4.0916],[5, -20.559, -5.4188, -4.0916],[1, -20.559, -5.4188, -4.0916],[3, -20.559,
-5.4188, -4.0916],[7, -20.559, -5.4188, -4.0916],[1, -20.559, -5.4188, -4.0916],[7, -20.559,
-5.4188, -4.0916], [5, -20.559, -5.4188, -4.0916],[2, -20.559, -5.4188, -4.0916],])
list1 = b.tolist()
len(list1)
myList = []
mynew = []
for j in range(8):
for i in range(len(list1)):
if list1[i][0]==j:
myList.append(list1[i][0:4])
mynew.append(myList)
print(myList)
我的输出应该是这样的:
[[[1.0, -20.559, -5.4188, -4.0916], [1.0, -22.0, -5.9432, -4.0916], [1.0, -20.559, -5.4188, -4.0916], [1.0, -20.559, -5.4188, -4.0916], [1.0, -20.559, -5.4188, -4.0916], [1.0, -20.559, -5.4188, -4.0916], [1.0, -20.559, -5.4188, -4.0916], [1.0, -20.559, -5.4188, -4.0916]], [[2.0, -20.559, -5.4188, -4.0916], [2.0, -20.559, -5.4188, -4.0916], [2.0, -20.559, -5.4188, -4.0916]], [[3.0, -20.559, -5.4188, -4.0916], [3.0, -20.559, -5.4188, -4.0916]], [[5.0, -20.559, -5.4188, -4.0916], [5.0, -20.559, -5.4188, -4.0916]], [[7.0, -20.559, -5.4188, -4.0916], [7.0, -20.559, -5.4188, -4.0916]]]
我得到的是:
[[1.0, -20.559, -5.4188, -4.0916], [1.0, -22.0, -5.9432, -4.0916], [1.0, -20.559, -5.4188, -4.0916], [1.0, -20.559, -5.4188, -4.0916], [1.0, -20.559, -5.4188, -4.0916], [1.0, -20.559, -5.4188, -4.0916], [1.0, -20.559, -5.4188, -4.0916], [1.0, -20.559, -5.4188, -4.0916], [2.0, -20.559, -5.4188, -4.0916], [2.0, -20.559, -5.4188, -4.0916], [2.0, -20.559, -5.4188, -4.0916], [3.0, -20.559, -5.4188, -4.0916], [3.0, -20.559, -5.4188, -4.0916], [5.0, -20.559, -5.4188, -4.0916], [5.0, -20.559, -5.4188, -4.0916], [7.0, -20.559, -5.4188, -4.0916], [7.0, -20.559, -5.4188, -4.0916]]
如有任何帮助,我们将不胜感激。
您需要一个临时文件 jList
来存储第一个元素相同的所有列表。
for j in range(8):
jList = []
for i in range(len(list1)):
if list1[i][0] == j:
jList.append(list1[i][:])
if len(jList):
myList.append(jList)
from pprint import pprint
pprint(myList)
"""
[[[1.0, -20.559, -5.4188, -4.0916],
[1.0, -22.0, -5.9432, -4.0916],
[1.0, -20.559, -5.4188, -4.0916],
[1.0, -20.559, -5.4188, -4.0916],
[1.0, -20.559, -5.4188, -4.0916],
[1.0, -20.559, -5.4188, -4.0916],
[1.0, -20.559, -5.4188, -4.0916],
[1.0, -20.559, -5.4188, -4.0916]],
[[2.0, -20.559, -5.4188, -4.0916],
[2.0, -20.559, -5.4188, -4.0916],
[2.0, -20.559, -5.4188, -4.0916]],
[[3.0, -20.559, -5.4188, -4.0916], [3.0, -20.559, -5.4188, -4.0916]],
[[5.0, -20.559, -5.4188, -4.0916], [5.0, -20.559, -5.4188, -4.0916]],
[[7.0, -20.559, -5.4188, -4.0916], [7.0, -20.559, -5.4188, -4.0916]]]
"""
但您也可以使用 pandas
df = pd.DataFrame(b)
result = []
for (method, group) in df.groupby(0):
result.append(group.values.tolist())
pprint(result)
尽管将所有相同的第一个元素分组到一个列表中,您也可以使用 pandas.DataFrame.sort_values() 通过在 groupby
df.sort_values([0, 1, 2, 3], axis=1, ascending=[True, True, True, True], inplace=True)
b = np.array([[1, -20.559, -5.4188, -4.0916],[1, -22, -5.9432,-4.0916],[1, -20.559, -5.4188,
-4.0916],[1, -20.559, -5.4188, -4.0916],[2, -20.559, -5.4188, -4.0916],[1, -20.559, -5.4188,
-4.0916],[3, -20.559, -5.4188, -4.0916], [2, -20.559, -5.4188, -4.0916],[1, -20.559,
-5.4188, -4.0916],[5, -20.559, -5.4188, -4.0916],[1, -20.559, -5.4188, -4.0916],[3, -20.559,
-5.4188, -4.0916],[7, -20.559, -5.4188, -4.0916],[1, -20.559, -5.4188, -4.0916],[7, -20.559,
-5.4188, -4.0916], [5, -20.559, -5.4188, -4.0916],[2, -20.559, -5.4188, -4.0916],])
list1 = b.tolist()
len(list1)
myList = []
mynew = []
for j in range(8):
for i in range(len(list1)):
if list1[i][0]==j:
myList.append(list1[i][0:4])
mynew.append(myList)
print(myList)
我的输出应该是这样的:
[[[1.0, -20.559, -5.4188, -4.0916], [1.0, -22.0, -5.9432, -4.0916], [1.0, -20.559, -5.4188, -4.0916], [1.0, -20.559, -5.4188, -4.0916], [1.0, -20.559, -5.4188, -4.0916], [1.0, -20.559, -5.4188, -4.0916], [1.0, -20.559, -5.4188, -4.0916], [1.0, -20.559, -5.4188, -4.0916]], [[2.0, -20.559, -5.4188, -4.0916], [2.0, -20.559, -5.4188, -4.0916], [2.0, -20.559, -5.4188, -4.0916]], [[3.0, -20.559, -5.4188, -4.0916], [3.0, -20.559, -5.4188, -4.0916]], [[5.0, -20.559, -5.4188, -4.0916], [5.0, -20.559, -5.4188, -4.0916]], [[7.0, -20.559, -5.4188, -4.0916], [7.0, -20.559, -5.4188, -4.0916]]]
我得到的是:
[[1.0, -20.559, -5.4188, -4.0916], [1.0, -22.0, -5.9432, -4.0916], [1.0, -20.559, -5.4188, -4.0916], [1.0, -20.559, -5.4188, -4.0916], [1.0, -20.559, -5.4188, -4.0916], [1.0, -20.559, -5.4188, -4.0916], [1.0, -20.559, -5.4188, -4.0916], [1.0, -20.559, -5.4188, -4.0916], [2.0, -20.559, -5.4188, -4.0916], [2.0, -20.559, -5.4188, -4.0916], [2.0, -20.559, -5.4188, -4.0916], [3.0, -20.559, -5.4188, -4.0916], [3.0, -20.559, -5.4188, -4.0916], [5.0, -20.559, -5.4188, -4.0916], [5.0, -20.559, -5.4188, -4.0916], [7.0, -20.559, -5.4188, -4.0916], [7.0, -20.559, -5.4188, -4.0916]]
如有任何帮助,我们将不胜感激。
您需要一个临时文件 jList
来存储第一个元素相同的所有列表。
for j in range(8):
jList = []
for i in range(len(list1)):
if list1[i][0] == j:
jList.append(list1[i][:])
if len(jList):
myList.append(jList)
from pprint import pprint
pprint(myList)
"""
[[[1.0, -20.559, -5.4188, -4.0916],
[1.0, -22.0, -5.9432, -4.0916],
[1.0, -20.559, -5.4188, -4.0916],
[1.0, -20.559, -5.4188, -4.0916],
[1.0, -20.559, -5.4188, -4.0916],
[1.0, -20.559, -5.4188, -4.0916],
[1.0, -20.559, -5.4188, -4.0916],
[1.0, -20.559, -5.4188, -4.0916]],
[[2.0, -20.559, -5.4188, -4.0916],
[2.0, -20.559, -5.4188, -4.0916],
[2.0, -20.559, -5.4188, -4.0916]],
[[3.0, -20.559, -5.4188, -4.0916], [3.0, -20.559, -5.4188, -4.0916]],
[[5.0, -20.559, -5.4188, -4.0916], [5.0, -20.559, -5.4188, -4.0916]],
[[7.0, -20.559, -5.4188, -4.0916], [7.0, -20.559, -5.4188, -4.0916]]]
"""
但您也可以使用 pandas
df = pd.DataFrame(b)
result = []
for (method, group) in df.groupby(0):
result.append(group.values.tolist())
pprint(result)
尽管将所有相同的第一个元素分组到一个列表中,您也可以使用 pandas.DataFrame.sort_values() 通过在 groupby
df.sort_values([0, 1, 2, 3], axis=1, ascending=[True, True, True, True], inplace=True)