如何将其修改为任意维数的输入矩阵,如何在不输入n的情况下更改n? 开发一个程序来输入任意维数的矩阵,并输出该矩阵的转置。当输入-1作为输入时,您应该停止接受行。使用2D (二维)列表来存储矩阵。您应该处理异常,例如检查元素数量不一致的无效行。 注:对于具有不一致元素数的无效行,打印“invalid Matrix”作为错误消息。对于您正在处理的任何其他异常,打印“Error”。 尝试: lst=[]
n=4
for i in range(n) :
inp=input()
if inp==-1:
break
marks=inp.spli
当我这样做的时候,图形输出是完全混乱的,但我出于好奇尝试了一下。我原以为它会因为非法的数学运算而崩溃:
// gl_Position=Projection*Modelview*Position; <- normal, works fine
// gl_Position=Position*Modelview*Projection; <- bad output, but still runs fine
Position是向量,其他是矩阵。
OpenGL是列为主的,这意味着您只能将矩阵右侧的向量相乘。如果向量是列,则没有数学方法将向量乘到矩阵的左侧,因为内部维度不匹配:
我有计算下三角矩阵求逆的代码。如何通过对下面的代码稍加修改来计算上三角矩阵的求逆? function L = L_inv(A)
[n,n] = size(A);
L = zeros(n);
for i=1:n
L(i,i) = 1/A(i,i);
for j=i+1:n
L(j,i)=-A(j, i:j-1)*L(i:j-1,i)/A(j,j);
end
end
我有一个5D矩阵作为B x C x D x H x W,其中D是深度,H是高度,W是宽度。例如,矩阵的大小为16 x 3 x 256 x 128 x 64,我想随机地对最后三个维度(D,H,W)进行洗牌,以获得一个新的矩阵。我怎么用python来做呢?输出矩阵类似于
16 x 3 x 256 x 128 x 64
16 x 3 x 64x 128 x 256
16 x 3 x 256 x 64x 128
16 x 3 x 128x 64x 256
...
如问题所示,我想计算矩阵行的梯度。代码:
import numpy.random as rng
import theano.tensor as T
from theano import function
t_x = T.matrix('X')
t_w = T.matrix('W')
t_y = T.dot(t_x, t_w.T)
t_g = T.grad(t_y[0,0], t_x[0]) # my wish, but DisconnectedInputError
t_g = T.grad(t_y[0,0], t_x) # no problem
我有一个矩阵,我想对矩阵中的每个数字进行计算,这样我就可以得到另一个具有相同维数的矩阵,但只有计算结果。这应该很简单,除非等式的一部分取决于我访问的是哪一行,因为我将需要对同一行中的列2的数字进行内部引用。
我想要应用的等式是:output_matrix value = (input_matrix value at a given position) - (input_matrix value in the same row at column[,2])
例如,对于矩阵中的1,1,计算将是1-5
对于矩阵中的位置1,2,计算将是5-5
对于矩阵中的位置2,1,计算将是2-6
input_mat
撕掉 of 撕掉 of a 撕掉 of a 撕掉。去把那些投上去!
如果您希望接受它,您的任务是编写输出/返回其输入/参数的程序/函数。棘手的部分是,如果我转到你的源代码2,输出/结果也必须转换。
您可以选择解决方案可以接受的哪种2D数据。例如,一个列表,一个矩阵,一个字符串列表,等等,说明它处理哪一个(S)。您可以假设输入始终是矩形的,并且沿每个维度的长度为1或更长。
为了进行换位,源代码中的短行将被视为填充了尾随空格,直到它是矩形的,然而,这些填充的尾随空间并不会影响代码的长度。
因为这是密码-高尔夫,所以目标是优化原始源代码的字节计数(而不是转置版本)。
示例
假设您的解决方案是一个数字
据我所知,pythons zip接受一系列迭代器,然后将迭代器返回给包含每个迭代器中的一个元素的元组,这样第一个元组将包含每个迭代器中的第一个元素。例如:
A = [1, 2, 3]
B = [4, 5, 6]
for a, b in zip(A, B):
print(f"{a}, {b}")
打印输出:
1, 4
2, 5
3, 6
将A和B分别转置,然后将A和B连接起来,就得到了那个精确的矩阵。是否存在两种操作结果不同的情况,或者它们基本上是同一件事?
编辑:*iterables
我正在尝试对我的数据(100行x 130列)运行NbClust包,以确定我应该选择的簇数,但如果我试图将它应用于整个数据集,我会一直收到这个错误:
> nc <- NbClust(mydata, distance="euclidean", min.nc=2, max.nc=99, method="ward",
index="duda")
[1] "There are only 100 nonmissing observations out of a possible 100 observations."
Er
下面的代码如下所示。
我不明白你为什么要转移矩阵。
有人能解释一下为什么这里需要转座子吗?
代码:
function b = back_and_forth(n)
b = reshape([1:1:n^2],[n,n])’
b([2:2:n], : ) = b([2:2:n],[end:-1:1])
end
在编写这个question.Consider的两个随机3x3 (n=3)矩阵A和B的查询时,我遇到了一个问题,其模式如下:
A(i,j,val)和B(i,j,val)
I int:行索引
J int:色度指数
val int:单元格值
编写一个查询,以获得与A格式相同的矩阵转置(A),即输出元组应该是格式(i,j,val),其中i是行,j是coloumn,val是单元值。
我是fortran的新手,我必须用MATMUL()将不同形状的矩阵相乘,结果并不是我所期望的……
下面是我的fortran代码:
integer, dimension(3,2) :: a
integer, dimension(2,2) :: b
integer :: i, j
a = reshape((/ 1, 1, 1, 1, 1, 1 /), shape(a))
b = MATMUL(a,TRANSPOSE(a))
do j = 1, 2
do i = 1, 2
print*, b(i, j)
end do
end do