如何解决将矩阵元素设置为等于子列表
将索引元素从列表复制到现有数组的python等效命令是什么?这是下面的要在Python中重新创建的matlab代码:
N = 5
cov_mat = ones(N,N+1)*-1
row = 1:1:N;
for n=1:N
cov_mat(n,1:N+1-n) = row(n:N);
end
解决方法
也许是吗?
a = [1,1,1]
b = [2,3]
a[3:5] = b
print(a) # [1,2,3]
,
您忘记向我们展示MATLAB代码的作用。我的MATLAB内存已过时,因此我无法轻易在脑海中运行它:(
在八度音程中:
>> N=5;
>> cov_mat = ones(N,N+1)*-1;
>> row=1:1:N;
>> row
row =
1 2 3 4 5
>> cov_mat(1,1:N+1-1) = row(1:N);
>> cov_mat
cov_mat =
1 2 3 4 5 -1
-1 -1 -1 -1 -1 -1
-1 -1 -1 -1 -1 -1
-1 -1 -1 -1 -1 -1
-1 -1 -1 -1 -1 -1
>> cov_mat(2,1:N+1-2) = row(2:N);
>> cov_mat(3,1:N+1-3) = row(3:N);
>> cov_mat
cov_mat =
1 2 3 4 5 -1
2 3 4 5 -1 -1
3 4 5 -1 -1 -1
-1 -1 -1 -1 -1 -1
-1 -1 -1 -1 -1 -1
因此将所有值都设置为-1,然后用该范围的切片填充一个三角形。
一个等效的numpy
(经过一番反复尝试才能使索引正确):
In [134]: N=5
In [135]: res = -np.ones((N,N+1),int)
In [136]: for i in range(N):
...: res[i,:N-i]=1+np.arange(i,N)
...:
...:
In [137]: res
Out[137]:
array([[ 1,3,4,5,-1],[ 2,-1,[ 3,[ 4,[ 5,-1]])
在两种语言中最好避免行迭代,但这可能不值得。
我们可以使用以下方法索引三角形值:
In [145]: res[np.arange(5)[:,None]<np.arange(6)[::-1]]
Out[145]: array([1,5])
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。