我正在寻找一种Pythonic方法来获取(方形)矩阵的所有对角线,表示为列表列表.
假设我有以下矩阵:
matrix = [[-2, 5, 3, 2],
[ 9, -6, 5, 1],
[ 3, 2, 7, 3],
[-1, 8, -4, 8]]
Run Code Online (Sandbox Code Playgroud)
然后大对角线很容易:
l = len(matrix[0])
print [matrix[i][i] for i in range(l)] # [-2, -6, 7, 8]
print [matrix[l-1-i][i] for i in range(l-1,-1,-1)] # [ 2, 5, 2, -1]
Run Code Online (Sandbox Code Playgroud)
但是我无法想出一种生成所有对角线的方法.我正在寻找的输出是:
[[-2], [9, 5], [3,-6, 3], [-1, 2, 5, 2], [8, 7, 1], [-4, 3], [8],
[2], [3,1], [5, 5, 3], [-2, -6, 7, 8], [9, 2, -4], [3, 8], [-1]]
Run Code Online (Sandbox Code Playgroud) 我有div预览框
HTML:
<div class="preview-content">PREVIEW</div>
Run Code Online (Sandbox Code Playgroud)
CSS:
.preview-content {
background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAYAAACp8Z5+AAAAGklEQVQIW2NkYGD4D8SMQAwGcAY2AbBKDBUAVuYCBQPd34sAAAAASUVORK5CYII=) repeat;
width: 100%;
min-height: 300px;
max-height: 300px;
line-height: 300px;
text-align: center;
vertical-align: middle;
font-size: 2em;
}
Run Code Online (Sandbox Code Playgroud)
注意:尽可能使用CSS
先感谢您
我正在查看这个答案中的基准,并希望将它们与diag
(用于不同的答案)进行比较.不幸的是,似乎diag
需要很长时间:
nc <- 1e4
set.seed(1)
m <- matrix(sample(letters,nc^2,replace=TRUE), ncol = nc)
microbenchmark(
diag = diag(m),
cond = m[row(m)==col(m)],
vec = m[(1:nc-1L)*nc+1:nc],
mat = m[cbind(1:nc,1:nc)],
times=10)
Run Code Online (Sandbox Code Playgroud)
评论:我测试了这些identical
.我从这个家庭作业问题的答案中选了一个"cond" .结果类似于整数矩阵,1:26
而不是letters
.
结果:
Unit: microseconds
expr min lq mean median uq max neval
diag 604343.469 629819.260 710371.3320 706842.3890 793144.019 837115.504 10
cond 3862039.512 3985784.025 4175724.0390 4186317.5260 4312493.742 4617117.706 10
vec 317.088 329.017 432.9099 350.1005 629.460 651.376 10
mat 272.147 …
Run Code Online (Sandbox Code Playgroud) 我想做一个numpy.array的第k个对角线的算术.我需要那些指数.例如,类似于:
>>> a = numpy.eye(2)
>>> a[numpy.diag_indices(a, k=-1)] = 5
>>> a
array([[ 1., 0.],
[ 5., 1.]])
Run Code Online (Sandbox Code Playgroud)
不幸的是,diag_indices只返回包含主对角线的索引,所以在我正在做的那一刻:
a += numpy.diag([5], -1)
Run Code Online (Sandbox Code Playgroud)
但这似乎不太好或不健全.:-)
numpy有没有办法获得除主要对角线以外的指数?
Octave有没有办法只计算和存储矩阵乘积的对角线?
基本上喜欢这样做: vector = diag(A*B);
我不关心A*B
除了对角线上的任何值.矩阵大小是围绕80k x 12
和12 x 80k
,所以即使我不关心速度/额外的内存它只是惯于适合在RAM中.
奇怪的是,因为Octave是一个包含大量数据集和对角线的包非常重要,所以它应该是可能的.
我试图沿矩阵的反对角线(次对角线,次对角线)求和元素.
所以,如果我有一个矩阵m:
m <- matrix(c(2, 3, 1, 4, 2, 5, 1, 3, 7), 3)
m
[,1] [,2] [,3]
[1,] 2 4 1
[2,] 3 2 3
[3,] 1 5 7
Run Code Online (Sandbox Code Playgroud)
我正在寻找总和m[3, 1] + m[2, 2] + m[1, 3]
,即1 + 2 + 1
我无法弄清楚如何设置迭代.据我所知,没有这个功能(就像diag()
其他对角线一样).
我有一个很大的nxn矩阵,想要拍摄不同大小的非对角切片.例如:
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
Run Code Online (Sandbox Code Playgroud)
我想要一个R函数,当给定矩阵和"对角线切片的宽度"时,它将返回仅具有这些值的nxn矩阵.所以对于上面的矩阵,比方说3,我得到:
1 x x x x x
1 2 x x x x
1 2 3 x x x
x 2 3 4 x x
x x 3 4 5 x
x x x 4 5 6
Run Code Online (Sandbox Code Playgroud)
目前我正在使用(原谅我)一个非常慢的for循环:
getDiags<-function(ndiags, cormat){
resmat=matrix(ncol=ncol(cormat),nrow=nrow(cormat))
dimnames(resmat)<-dimnames(cormat)
for(j …
Run Code Online (Sandbox Code Playgroud) 使用NumPy,我想生成一个长度为k的n维数组的所有行和对角线的列表.
以长度为3的以下三维数组为例.
array([[[ 0, 1, 2],
[ 3, 4, 5],
[ 6, 7, 8]],
[[ 9, 10, 11],
[12, 13, 14],
[15, 16, 17]],
[[18, 19, 20],
[21, 22, 23],
[24, 25, 26]]])
Run Code Online (Sandbox Code Playgroud)
对于这种情况,我想获得以下所有类型的序列.对于任何给定的情况,我想获得每种类型的所有可能序列.对于每种情况,在下面的括号中给出了所需序列的实例.
0, 1, 2
)0, 3, 6
)0, 9, 18
)0, 4, 8
,2, 4, 6
)0, 10, 20
,2, 10, 18
)0, 12, 24
,6, 12, 18
)我想知道是否有可能使用css或jquery创建一个带有对角线边界线的表,如下所示:
任何想法将不胜感激.
假设我有这个数据框:
1 2 3 4
100 8 12 5 14
99 1 6 4 3
98 2 5 4 11
97 5 3 7 2
Run Code Online (Sandbox Code Playgroud)
在上面的数据框中,这些值表示观察的观察次数(100, 1), (99, 1)
等.
在我的上下文中,对角线具有相同的含义:
1 2 3 4
100 A B C D
99 B C D E
98 C D E F
97 D E F G
Run Code Online (Sandbox Code Playgroud)
如何在第一个数据框中对角线(即,相似字母的数量之和)求和?
这会产生:
group sum
A 8
B 13
C 13
D 28
E 10
F 18
G 2
Run Code Online (Sandbox Code Playgroud)
例如,D
是5+5+4+14