3 回答

TA貢獻1806條經(jīng)驗 獲得超8個贊
你可以用np.argsort()一些 numpy 切片來做到這一點。使用您的示例數(shù)組:
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]])
基本上按最后一行內(nèi)容的升序值np.argsort(arr[-1, :])返回最后一行的索引。這將返回您給出的示例。arrarray([1, 0, 2, 3, 4])
然后我們只需使用arr[:, np.argsort(arr[-1, :])].

TA貢獻1796條經(jīng)驗 獲得超7個贊
你可以用np.argsort()一些 numpy 切片來做到這一點。使用您的示例數(shù)組:
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]])
基本上按最后一行內(nèi)容的升序值np.argsort(arr[-1, :])返回最后一行的索引。這將返回您給出的示例。arrarray([1, 0, 2, 3, 4])
然后我們只需使用arr[:, np.argsort(arr[-1, :])].

TA貢獻1797條經(jīng)驗 獲得超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)
添加回答
舉報