Python 用负数对numpy字符串数组排序?
我对以数字为字符串的numpy数组排序有问题。我需要将它们保留为字符串,因为整数后面还有其他单词 它将负数按相反顺序排序:Python 用负数对numpy字符串数组排序?,python,arrays,sorting,numpy,Python,Arrays,Sorting,Numpy,我对以数字为字符串的numpy数组排序有问题。我需要将它们保留为字符串,因为整数后面还有其他单词 它将负数按相反顺序排序: >>> import numpy as np >>> a = np.array(["3", "-2", "-1", "0", "2"]) >>> a.sort() >>> a array(['-1', '-2', '0', '2', '3'], dtype='|S2') 我本以为结果是: array(
>>> import numpy as np
>>> a = np.array(["3", "-2", "-1", "0", "2"])
>>> a.sort()
>>> a
array(['-1', '-2', '0', '2', '3'], dtype='|S2')
我本以为结果是:
array(['-2', '-1', '0', '2', '3'], dtype='|S2')
有什么建议吗?假设在其他单词之前的整数后面有一个空格,那么如果
a
是regluar python列表,您应该:
a.sort(key = lambda s: int(s.split()[0]))
不确定numpy中的等价物是什么(不知道如何指定键),但一种可能性是转换为列表并返回到数组。假设在其他单词之前的整数后面有一个空格,那么如果a
是regluar pythonlist
,您应该:
a.sort(key = lambda s: int(s.split()[0]))
不确定numpy中的等价物是什么(不知道如何指定键),但一种可能是转换为列表并返回到数组。您可以使用:
您可以使用:
那么您将两种类型的数据保存在一个字符串中?似乎不太适合numpy
“我需要将它们保留为字符串,因为整数后面还有其他单词”。因此,您有一个类似于“76号长号”
的字符串,您想将其视为数字76
,后跟单词“长号”
?那就这样做吧。解析字符串并创建两个元组(数字,字符串的其余部分)。不,它的行为不好。有时是数字和字符串,有时只是字符串。“自然排序”的方法是有效的。那么您将两种类型的数据保存在一个字符串中?似乎不太适合numpy
“我需要将它们保留为字符串,因为整数后面还有其他单词”。因此,您有一个类似于“76号长号”
的字符串,您想将其视为数字76
,后跟单词“长号”
?那就这样做吧。解析字符串并创建两个元组(数字,字符串的其余部分)。不,它的行为不好。有时是数字和字符串,有时只是字符串。“自然排序”方法是有效的。如果你尝试排序[“-1单词”,“-2向上”]
,这就是我认为OP的意思是“整数后面的其他单词”。我在数组包含[“-1单词”,“-2向上”]
时发布了输出。我认为顺序是正确的,不是吗?你是对的。我误读了你的正则表达式。看起来不错,这取决于您希望如何处理字符串开头不显示整数的情况!(我的引发了一个ValueError。)如果你尝试排序[“-1单词”,“-2向上”]
,那将得到错误的顺序,这就是我认为OP的意思是“整数后面的其他单词”。我在数组包含[“-1单词”,“-2向上”]
时发布了输出。我认为顺序是正确的,不是吗?你是对的。我误读了你的正则表达式。看起来不错,这取决于您希望如何处理字符串开头不显示整数的情况!(我的引发了一个ValueError。)您的版本使用排序(a,key=lambda s:int(s.split()[0])
。谢谢您的版本可以使用排序(a,key=lambda s:int(s.split()[0]))。谢谢