我有一个numpy数组:
import numpy as np
phrase = np.array(list("eholl"))
a = 'hello'
我想根据变量“a”中字母的顺序(h第一,e第二...)对变量进行排序,从而生成有序数组:
已尝试:
z = np.sort(phrase, order=a)
print(z)
我想要的输出:
hello
错误:
ValueError Traceback (most recent call last)
<ipython-input-10-64807c091753> in <module>
2 phrase = np.array(list("eholl"))
3 a = 'hello'
----> 4 z = np.sort(phrase, order=a)
5
6 print(z)
<__array_function__ internals> in sort(*args, **kwargs)
/usr/local/lib/python3.7/dist-packages/numpy/core/fromnumeric.py in sort(a, axis, kind, order)
996 else:
997 a = asanyarray(a).copy(order="K")
--> 998 a.sort(axis=axis, kind=kind, order=order)
999 return a
1000
**ValueError: Cannot specify order when the array has no fields.**
1条答案
按热度按时间gywdnpxw1#
np.sort
的order
参数用于指定要比较的字段(第一个、第二个等)。它对您没有帮助。如果你不需要排序函数的直接输出是一个numpy数组,你可以简单地使用内置函数
sorted
。你可以通过它的key
参数指定一个key函数。在你的例子中,排序键是一个字符串的索引,可以通过str.find
获得。