我正在学习/练习Python并编写了这个简单的程序
import numpy as np
rng = np.random.default_rng()
randList = rng.integers(200, size=(50, 2)) + 1
sortList = sorted(randList, key=lambda x:x[0])
print(randList)
print(sortList)
生成50对1到200之间的随机整数(包括1和200),然后根据第一个元素将列表排序为新列表
当打印未排序的列表时,我得到
[[x y]
[x y]
... ]
但是,当我打印排序列表时,我得到
[array([x, y], dtype=int64),
array([x, y], dtype=int64),
.......................... ]
列表实际上是按我想要的排序的,但是它打印了所有这些额外的东西。
我做错什么了吗?我找到的所有与排序函数相关的例子都没有提到这一点,我找不到任何解释为什么它会这样做。
我几乎只用C++编程,所以Python对我来说很陌生。请帮助我理解。
我已经尝试了一些东西与单独的列表和排序的元组或什么,但它很难理解,并没有工作的预期。
1条答案
按热度按时间sxpgvts31#
只是NumPy和Python有不同的可迭代类型。当你打印一个2d NumPyarray时,它知道如何正确显示自己。当你打印一个2d Pythonlist时,它知道如何正确地显示自己。当你使用
sorted()
时,它会将一个2d NumPy数组转换为一个1d NumPy数组的普通Python列表。Python列表不知道如何打印出NumPy子数组的良好表示,所以它有点混乱。要解决这个问题,您可以使用use NumPy to sort the NumPy array:
或者你可以将
sorted()
中的列表转换为NumPy数组:或者你可以完全convert the NumPy array to a list: