【发布时间】:2020-12-30 11:41:43
【问题描述】:
我正在尝试从其原始形状重塑一个数组,以使每一行的元素沿对角线下降:
np.random.seed(0)
my_array = np.random.randint(1, 50, size=(5, 3))
array([[45, 48, 1],
[ 4, 4, 40],
[10, 20, 22],
[37, 24, 7],
[25, 25, 13]])
我希望结果如下所示:
my_array_2 = np.array([[45, 0, 0],
[ 4, 48, 0],
[10, 4, 1],
[37, 20, 40],
[25, 24, 22],
[ 0, 25, 7],
[ 0, 0, 13]])
这是我能得到的最接近的解决方案:
my_diag = []
for i in range(len(my_array)):
my_diag_ = np.diag(my_array[i], k=0)
my_diag.append(my_diag_)
my_array1 = np.vstack(my_diag)
array([[45, 0, 0],
[ 0, 48, 0],
[ 0, 0, 1],
[ 4, 0, 0],
[ 0, 4, 0],
[ 0, 0, 40],
[10, 0, 0],
[ 0, 20, 0],
[ 0, 0, 22],
[37, 0, 0],
[ 0, 24, 0],
[ 0, 0, 7],
[25, 0, 0],
[ 0, 25, 0],
[ 0, 0, 13]])
从这里我认为有可能删除所有零对角线,但我不知道该怎么做。
【问题讨论】:
-
不要忘记选择一个答案以将您的问题从未回答队列中删除,并为任何对您提供帮助的人投票。
-
谢谢大家的帮助!
-
感谢的正确方式是点赞。当所选答案的赞成票为零时,这看起来很奇怪。
标签: python numpy numpy-ndarray diagonal