首页 > 解决方案 > 字符串数组之一未排序

问题描述

import numpy as np

arr1=np.array(['102.0','135.0','135.0','152.0','93.0','95.0'])

print(arr1)
arr1.sort()
print(arr1)

print()

arr2=np.array(['86.0','82.0','84.0','87.0','95.0','89.0'])

print(arr2)
arr2.sort()
print(arr2)

第一个数组没有排序,但是第二个是排序的,为什么?我找不到错误。

标签: pythonpython-3.xsorting

解决方案


sort函数仅对整数进行正确排序,因此对于字符串,它按第一个字符排序,因此超过 100 的将在 90 左右之前,修复的方法是将它们更改为整数:

import numpy as np

arr1=np.array(['102.0','135.0','135.0','152.0','93.0','95.0'])
arr1 = arr1.astype(float)
print(arr1)
arr1.sort()
print(arr1)

print()

arr2=np.array(['86.0','82.0','84.0','87.0','95.0','89.0'])
arr2 = arr2.astype(float)
print(arr2)
arr2.sort()
print(arr2)

正如@juanpa.arrivillaga 提到的:

它按所有字符按字典顺序排序


推荐阅读