3 回答
TA贡献1806条经验 获得超8个赞
你可以用np.argsort()一些 numpy 切片来做到这一点。使用您的示例数组:
arr = np.array([[0, 1, 0, 0, 0],
[1, 0, 0, 0, 0],
[0, 0, 0, 1, 0],
[0, 0, 0, 0, 1],
[1, 0, 3, 4, 4]])
arr[:, np.argsort(arr[-1, :])]
# array([[1, 0, 0, 0, 0],
# [0, 1, 0, 0, 0],
# [0, 0, 0, 1, 0],
# [0, 0, 0, 0, 1],
# [0, 1, 3, 4, 4]])
基本上按最后一行内容的升序值np.argsort(arr[-1, :])返回最后一行的索引。这将返回您给出的示例。arrarray([1, 0, 2, 3, 4])
然后我们只需使用arr[:, np.argsort(arr[-1, :])].
TA贡献1796条经验 获得超7个赞
你可以用np.argsort()一些 numpy 切片来做到这一点。使用您的示例数组:
arr = np.array([[0, 1, 0, 0, 0],
[1, 0, 0, 0, 0],
[0, 0, 0, 1, 0],
[0, 0, 0, 0, 1],
[1, 0, 3, 4, 4]])
arr[:, np.argsort(arr[-1, :])]
# array([[1, 0, 0, 0, 0],
# [0, 1, 0, 0, 0],
# [0, 0, 0, 1, 0],
# [0, 0, 0, 0, 1],
# [0, 1, 3, 4, 4]])
基本上按最后一行内容的升序值np.argsort(arr[-1, :])返回最后一行的索引。这将返回您给出的示例。arrarray([1, 0, 2, 3, 4])
然后我们只需使用arr[:, np.argsort(arr[-1, :])].
TA贡献1797条经验 获得超4个赞
使用 argsort 选择 con 作为索引:
import numpy as np
num_seq = 10
seq_len = 5
seq_width = 5
con = np.random.randint(0, seq_width,size=seq_len)
seq = np.zeros((seq_len, seq_width))
seq[np.arange(seq_len), con] = 1
seq[seq_len-1, np.arange(seq_width)] = con
i = np.argsort(con)
seq = seq[:,i]
print(con)
print(seq)
添加回答
举报