我有一个数组如下:
arr = np.numpy([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21])
我想做的是把这个数组转换成一个反对角的上三角方阵。预期的输出如下所示:
output = [
[1, 2, 3, 4, 5, 6],
[7, 8, 9, 10, 11, 0],
[12, 13, 14, 15, 0, 0],
[16, 17, 18, 0, 0, 0],
[19, 20, 0, 0, 0, 0],
[21, 0, 0, 0, 0, 0]
]
我采用的方法是创建一个全零的方阵,并使用triu_indices
更新索引。
tri = np.zeros((6, 6))
tri[np.triu_indices(6, 1)] = arr
然而,这给了我错误:ValueError: shape mismatch: value array of shape (21,) could not be broadcast to indexing result of shape (15,)
请注意,1-d和矩阵的大小将始终分别为21和6x6。
不知道我犯了什么错误。这是正确的路要走吗?或者有更好的方法来代替这个?我将感激任何帮助。
2条答案
按热度按时间s3fp2yjn1#
您需要使用
k=0
和修改列索引(通过减去行索引):输出:
jaxagkaj2#
两个数组大小不兼容。必须将“arr”重新整形为(6,6)的大小