我有5x5单位矩阵和一个浮点数列表
1 0 0 0 0
0 1 0 0 0
0 0 1 0 0
0 0 0 1 0
0 0 0 0 1 L=[0.01, 0.02, 0.26, 0.03, 0.68]
我的问题是如何将列表元素放入单位矩阵?
0.01 0 0 0 0
0 0.02 0 0 0
0 0 0.26 0 0
0 0 0 0.03 0
0 0 0 0 0.68
由于
答案 0 :(得分:5)
此方法可扩展为写入其他数组的对角线,即>>> a = np.eye(5)
>>> L = [0.01, 0.02, 0.26, 0.03, 0.68]
>>> d = np.diag_indices_from(a)
>>> a[d] = L
>>> print(a)
[[ 0.01 0. 0. 0. 0. ]
[ 0. 0.02 0. 0. 0. ]
[ 0. 0. 0.26 0. 0. ]
[ 0. 0. 0. 0.03 0. ]
[ 0. 0. 0. 0. 0.68]]
不必是单位矩阵:
np.diagonal(a)
另请注意,在numpy版本1.10+上,rewrite /wp-admin$ $scheme://$host$uri/ permanent;
location /wp-admin {
index index.php index.html index.htm;
try_files $uri /wp-admin/index.php?q=$uri&$args;
}
实际上将返回可用于修改原始数组的可写视图。
答案 1 :(得分:4)
在numpy
上,这很简单:
L = [0.01, 0.02, 0.26, 0.03, 0.68]
diag_mat = numpy.diag(L)
否则,在vanilla python中,您可以预先分配矩阵并相应地设置元素:
diag_mat = [ 5 * [0] for _ in range(5)]
for index, value in enumerate(L):
diag_mat[index][index] = value
答案 2 :(得分:3)
您可以使用import numpy as np
x = np.eye(5) # create a 5x5 identity matrix
L = [0.01, 0.02, 0.26, 0.03, 0.68]
x = x * L
:
#!/bin/bash
ls folder1 >tmp.file
while read line
do
tar -cf folder2/"$line".tar -C folder1 "$line"
rm folder1/$line
done < tmp.file
答案 3 :(得分:1)
您可以将L
中每个元素的索引与二维矩阵中的对角线索引匹配:
for i, val in enumerate(arr):
arr[i][i] = val
答案 4 :(得分:0)
我认为有两种简单的方法可以实现这一目标:
您没有指定存储矩阵的方式,所以我假设它是嵌套的形式 [[ligne1],[ligne2]]
将您的示例作为预期输出:
[[0.01, 0, 0, 0, 0], [0, 0.02, 0, 0, 0]]
首先没有numpy:
for in_row in range(len(number_of row)):
matrix[in_row][in_row] = L[in_row]
有numpy有一个内置函数numpy.diag