我试图弄清楚如何获得矩阵的所有对角线.例如,假设我有以下矩阵:A < - 矩阵(1:16,4)
使用该diag(A)函数将返回
[1] 1 6 11 16
Run Code Online (Sandbox Code Playgroud)
除了主要的对角线,我想要一个上面和下面所有对角线的列表.
5 10 15
2 7 12
9 14
3 8
4
13
Run Code Online (Sandbox Code Playgroud)
我找到了以下链接/sf/answers/913480571/,它给我直接在主要的上方和下方的对角线,但我似乎无法弄清楚如何扩展代码以获得任何大小的其余部分矩阵.我尝试了两个嵌套for循环,因为看起来某种矩阵下标的递增会产生我正在寻找的结果.我尝试在for循环中使用ncol(A),nrow(A),但似乎无法找出正确的组合.另外我知道for循环通常在R中不受欢迎.
给出的代码是:
diag(A[-4,-1])
diag(A[-1,-4])
Run Code Online (Sandbox Code Playgroud)
它返回了两个对角线,包括上部和下部
当然这是一个方阵,并不是我想要执行的所有矩阵都是正方形的.如有必要,可以使用NA填充非正方形区域.我需要的答案可能是页面上的其他答案之一,但最初的问题涉及手段,总和等,这增加了一层复杂性,超出了我的目的.我觉得解决这个问题的方法非常简单,但它并没有发生在我身上.我也很惊讶我无法在任何地方找到这个问题,这似乎是一个很常见的问题.也许我不知道这个问题的正确术语.
给定一个数组:
array1 = [1 2 3];
Run Code Online (Sandbox Code Playgroud)
我必须这样扭转它:
array1MirrorImage = [3 2 1];
Run Code Online (Sandbox Code Playgroud)
到目前为止,我获得了这个丑陋的解
array1MirrorImage = padarray(array1, [0 length(array1)], 'symmetric', 'pre');
array1MirrorImage = array1MirrorImage(1:length(array1));
Run Code Online (Sandbox Code Playgroud)
有更漂亮的解决方案吗?
我说有一个二维数组
0 0 0 0 0
0 2 3 4 0
0 9 1 5 0
0 8 7 6 0
0 0 0 0 0
Run Code Online (Sandbox Code Playgroud)
我需要得到与1相邻的所有数字(2,3,4,5,6,7,8,9)
是否有一个不那么丑陋的解决方案:
topLeft = array[x-1][y-1]
top = array[x][y-1]
topRight = array[x+1][y-1]
# etc
Run Code Online (Sandbox Code Playgroud)
谢谢!
language-agnostic arrays algorithm matrix multidimensional-array
我在C++中做了一些OpenGL编程.
这是我的代码的一部分:
#include <time.h>
#include <windows.h>
#include <gl/gl.h>
#include <gl/glu.h>
#include <gl/glut.h> <<< Error here "Cannot open source file gl/glut.h"
Run Code Online (Sandbox Code Playgroud)
我怎样才能解决这个问题?
编辑:我正在使用Microsoft Visual C++ Express Edition.对不起忘了提它
我有一个CSS 3D立方体,我正试图向左/右/向上/向下旋转,因为它看起来像用户.如果我使用css rotation函数,那么我旋转轴,而不是立方体.
网上有很多关于X,Y,Z矩阵旋转计算的文章,但我现在花了好几天试图设置这个东西,这些信息都没有真正帮助我.
解决我的问题的方法是一个WebKitCSSMatrix对象,它有自己的旋转功能,可以起到魔力的作用.关于小提琴的一个例子:http://jsfiddle.net/joecritch/tZBDW/.但同样,这只依赖于Uppon Webkit,但我需要在这里进行交叉的讨论.
现在,成功的方法有三个步骤:
1)我需要获得当前矩阵,设置方向向量(上/下为1,0,0,左/右旋转为0,1,0)并设置角度.DONE.
2)我需要根据当前矩阵计算新的旋转矢量.DONE.
3)我需要通过新的矢量和角度实际旋转当前矩阵.问题.
var newMArray = deMatrix(".cube");//getting current matrix from CSS
var v = [vecX, vecY, vecZ, 0];//current vector (1,0,0) or (0,1,0)
var newV = newMVector(newMArray, v);//calculating new vector for current matrix
//getting the angle for each axis based on new vector
angleX = newV[0]*angle;
angleY = newV[1]*angle;
angleZ = newV[2]*angle;
this.rotateX -= angleX;
this.rotateY -= angleY;
this.rotateZ -= angleZ;
//calculating the rotation matrix
var rotationXMatrix, …Run Code Online (Sandbox Code Playgroud) import numpy as np
matrix1 = np.array([[1,2,3],[4,5,6]])
vector1 = matrix1[:,0] # This should have shape (2,1) but actually has (2,)
matrix2 = np.array([[2,3],[5,6]])
np.hstack((vector1, matrix2))
ValueError: all the input arrays must have same number of dimensions
Run Code Online (Sandbox Code Playgroud)
问题是当我选择matrix1的第一列并将其放在vector1中时,它会转换为行向量,所以当我尝试与matrix2连接时,我得到一个维度错误.我能做到这一点.
np.hstack((vector1.reshape(matrix2.shape[0],1), matrix2))
Run Code Online (Sandbox Code Playgroud)
但是每次我必须连接矩阵和向量时,这对我来说太难看了.有更简单的方法吗?
当我发现一些奇怪的东西时,我对R中矩阵的内存使用感兴趣.在循环中,我使矩阵的列数增长,并为每个步骤计算对象大小,如下所示:
x <- 10
size <- matrix(1:x, x, 2)
for (i in 1:x){
m <- matrix(1, 2, i)
size[i,2] <- object.size(m)
}
Run Code Online (Sandbox Code Playgroud)
这使
plot(size[,1], size[,2], xlab="n columns", ylab="memory")
Run Code Online (Sandbox Code Playgroud)
似乎具有2行和5,6,7或8列的矩阵使用完全相同的内存.我们怎么解释呢?
当我从文件中读取数据时,我正在尝试构建和更新稀疏矩阵.矩阵的大小100000X40000
更新稀疏矩阵的多个条目的最有效方法是什么?特别是我需要将每个条目递增1.
假设我有行索引 [2, 236, 246, 389, 1691]
和列索引 [117, 3, 34, 2757, 74, 1635, 52]
所以以下所有条目必须加1:
(2,117) (2,3) (2,34) (2,2757) ...
(236,117) (236,3) (236, 34) (236,2757) ...
等等.
我已经在使用,lil_matrix因为它在我尝试更新单个条目时给了我一个警告.
lil_matrix格式已经不支持多次更新.
matrix[1:3,0] += [2,3]给我一个未实现的错误.
我可以通过单独递增每个条目来天真地做到这一点.我想知道是否有更好的方法来做到这一点,或者我可以使用更好的稀疏矩阵实现.
我的电脑也是一台普通的i5机器,内存为4GB,所以我要注意不要把它炸掉:)
我正在尝试实施匈牙利算法,但我坚持第5步.基本上,给定一个n X n数字矩阵,我如何找到最小数量的垂直+水平线,以便覆盖矩阵中的零?
之前有人将这个问题作为一个重复此,该方案中提到有不正确的,别人也跑进贴有代码的bug.
我不是在寻找代码,而是寻找能够绘制这些线条的概念......
编辑:请不要发布简单(但错误)贪心算法:给定此输入:
(0, 1, 0, 1, 1)
(1, 1, 0, 1, 1)
(1, 0, 0, 0, 1)
(1, 1, 0, 1, 1)
(1, 0, 0, 1, 0)
Run Code Online (Sandbox Code Playgroud)
我明确选择第2列(0索引):
(0, 1, x, 1, 1)
(1, 1, x, 1, 1)
(1, 0, x, 0, 1)
(1, 1, x, 1, 1)
(1, 0, x, 1, 0)
Run Code Online (Sandbox Code Playgroud)
现在我可以选择第2行或第1列,它们都有两个"剩余"零.如果我选择col2,我最终会在这条路径上找到错误的解决方案:
(0, x, x, 1, 1)
(1, x, x, 1, 1)
(1, x, …Run Code Online (Sandbox Code Playgroud)