3 回答
TA贡献1773条经验 获得超3个赞
由于您正在获取输入并将其添加到数组中,因此“数字”将是str
而不是ints
。您需要首先将输入转换为接受int
而不是str
将输入更改为int
:
user_in = int(input()) # ex: '4' print(type(user_in)) # <class 'int'>
请注意我如何使用将int()
用户input()
输入从 a 转换str
为 an 的方法int
。
现在可以将输入添加到数组中,由于值是整数而不是字符串,您将获得预期的结果。
将列表中现有的项目修改为int
:
另一种方法是将包含数字字符串的数组更改为ints
. 您可以map()
遍历数组中的所有项目,将它们更改为int
.
arr = list(map(int, arr))
这将遍历您的列表并将每个项目更改为类型int
TA贡献1799条经验 获得超8个赞
编写代码时的准确性和您的问题很重要。
您的示例数组会产生错误:
In [69]: a = np.array(10,2,3,1,20,30)
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-69-d65567166292> in <module>
----> 1 a = np.array(10,2,3,1,20,30)
TypeError: array() takes from 1 to 2 positional arguments but 6 were given
将其更改为整数列表:
In [70]: a = np.array([10,2,3,1,20,30])
In [71]: a
Out[71]: array([10, 2, 3, 1, 20, 30])
排序做你想要的:
In [72]: np.sort(a)
Out[72]: array([ 1, 2, 3, 10, 20, 30])
但如果输入是字符串或字符串列表:
In [73]: a = np.array('10,2,3,1,20,30'.split(','))
In [74]: a
Out[74]: array(['10', '2', '3', '1', '20', '30'], dtype='<U2')
In [75]: np.sort(a)
Out[75]: array(['1', '10', '2', '20', '3', '30'], dtype='<U2')
排序是字符串词法的。并且使用引号来显示字符串是很清楚的。
TA贡献1859条经验 获得超6个赞
import numpy as np
arr = np.array([10,2,3,1,20,30])
print(np.sort(arr))
这很好用。首先创建一个列表,然后再尝试对其进行排序。
添加回答
举报