我正在尝试对这种数组进行排序:
array([[0. , 0. , 0. , 0. , 0. ,
0. , 0. , 0.46938776, 0. , 0. ,
0. , 0. , 0. , 0. , 0. ,
0. , 0. , 0. , 0. , 0. ,
0. , 0. , 0. , 0. , 0. ,
0. , 0. , 0. , 0. , 0. ,
0. , 0. , 0. , 0.53061224, 0. ,
0. , 0. , 0. , 0. , 0. ]])
我的代码是:
def selection_sort(x):
for i in range(len(x)):
swap = i + np.argmin(x[i:])
(x[i], x[swap]) = (x[swap], x[i])
return x
selection_sort(output)
我也尝试过使用这个:
print(np.sort(arr))
但不幸的是,没有任何工作的想法?
发布于 2020-07-22 12:05:47
让我们来举一个直接的例子,
# What you did
x = np.array([[1, 2, 3]])
print('Shape', x.shape, 'Length', len(x))
# What should be done to make your code work
y = np.array([1, 2, 3])
print('Shape', y.shape, len(y))
如果您考虑前面的例子,变量x
在列表中包含一个列表,因此是一个2D列表(为了清楚起见,我不考虑numpy矩阵)。因此,您得到的长度是最后一个维度的大小(在本例中为1)。相反,变量y
包含相同的值,但它只包含一个列表(不是列表中的列表,因为只有一个方括号)。因此,y
的长度是3。
您在问题中定义的x
的值与我在前面提到的脚本中定义x
的方式相同。因为变量x
的长度是1,所以您试图执行的selection_sort
在索引1
上被卡住了。您可以通过遵循变量声明来解决这个问题,就像我对变量y
所做的那样。
此外,我认为print(np.sort(arr))
应该可以工作。它在我的情况下是有效的。我相信你做错了什么或错过了什么,因此,你认为np.sort()
不能工作。由于信息/错误不清楚,我在等待您的审查。
https://stackoverflow.com/questions/63032536
复制相似问题