NumPy是一个非常有用的库,使用它我发现它能够很容易地处理相当大(10000 x 10000)的matrix,但是开始与任何更大的(争取创build一个50000 x 50000matrix失败)。 显然,这是因为内存需求量大。 有没有办法以某种方式在NumPy中生成巨大的matrix(比如100万)?
在numpy ,一些操作返回形状(R, 1)但有一些返回(R,) 。 这将使matrix乘法更加乏味,因为需要显式reshape 。 例如,给定一个matrixM ,如果我们想要做numpy.dot(M[:,0], numpy.ones((1, R)))其中R是行数(当然,同样的问题也是按列发生)。 由于M[:,0]在形状(R,)但numpy.ones((1, R))在形状(1, R)我们将得到matrices are not aligned错误。 所以我的问题是: 形状(R, 1)和(R,)什么区别。 我从字面上知道这是列表中的数字和列表,其中所有列表只包含一个数字。 只是想知道为什么不devisenumpy所以它有利于形状(R, 1)而不是(R,) ,以便于matrix乘法。 上面的例子有更好的方法吗? 没有像这样明确重塑: numpy.dot(M[:,0].reshape(R, 1), numpy.ones((1, R)))
每个的优点和缺点是什么? 从我所看到的情况来看,如果需要的话,任何一方都可以替代另一方,所以我应该使用两者还是应该坚持其中之一? 程序的风格会影响我的select吗? 我正在做一些使用numpy的机器学习,所以确实有很多的matrix,但也有很多vector(数组)。
我们习惯于在Matlab中使用不同forms的索引: 标准(每个维度使用整数), 逻辑(使用逻辑值), 线性(使用单个索引来遍历具有多个维度的数组)。 乍一看,这些forms似乎是独占的:索引是标准的,或逻辑的或线性的。 但是,有时这些forms中有几种似乎是混合的。 例如, >> A = magic(3) A = 8 1 6 3 5 7 4 9 2 >> A(A>5) ans = 8 9 6 7 这是合乎逻辑的索引,对吗? 但是它也具有线性索引的一些特征,因为列向量被返回。 实际上,逻辑索引A>5与线性索引find(A>5)具有相同的效果。 作为第二个例子,考虑一下 >> A = magic(3) A = 8 1 6 3 5 7 4 9 2 >> A(1:2, [true false true]) ans […]
受到Raymond Chen的文章的启发,假设你有一个4×4的二维数组,写一个旋转90度的函数。 雷蒙德链接到伪代码的解决scheme,但我希望看到一些现实世界的东西。 [1][2][3][4] [5][6][7][8] [9][0][1][2] [3][4][5][6] 变为: [3][9][5][1] [4][0][6][2] [5][1][7][3] [6][2][8][4] 更新 :尼克的答案是最直接的,但有没有办法做得比n ^ 2更好? 如果matrix是10000×10000呢?
我正在用CUDA,C ++,C#和Java做一些基准testing,并使用MATLAB进行validation和matrix生成。 但是,当我乘以MATLAB,2048×2048,甚至更大的matrix几乎立即倍增。 1024×1024 2048×2048 4096×4096 ——— ——— ——— CUDA C (ms) 43.11 391.05 3407.99 C++ (ms) 6137.10 64369.29 551390.93 C# (ms) 10509.00 300684.00 2527250.00 Java (ms) 9149.90 92562.28 838357.94 MATLAB (ms) 75.01 423.10 3133.90 只有CUDA是有竞争力的,但我认为至lessC ++会稍微接近一点,而不是慢60倍。 所以我的问题是 – MATLAB如何快速地做到这一点? C ++代码: float temp = 0; timer.start(); for(int j = 0; j < rozmer; j++) […]
我想定义一个没有初始化长度的二维数组,像这样: Matrix = [][] 但它不工作… 我已经尝试了下面的代码,但它也是错误的: Matrix = [5][5] 错误: Traceback … IndexError: list index out of range 我的错误是什么?
这个问题经常以某种forms出现(例如参见这里或这里 )。 所以我想我会以一般forms呈现,并提供一个可供未来参考的答案。 给定任意数量的可能不同大小的vector,生成一个n列matrix,其行描述了从这些vector(笛卡尔乘积)中取出的所有元素的组合。 例如, vectors = { [1 2], [3 6 9], [10 20] } 应该给 combs = [ 1 3 10 1 3 20 1 6 10 1 6 20 1 9 10 1 9 20 2 3 10 2 3 20 2 6 10 2 6 20 2 9 10 2 9 […]
我有一个data.frame看起来像这样。 xa 1 xb 2 xc 3 ya 3 yb 3 yc 2 我想要这个matrixforms,所以我可以喂它到热图做一个情节。 结果应该如下所示: abc x 1 2 3 y 3 3 2 我已经尝试从重塑包转换,我已经尝试编写一个手动function来做到这一点,但我似乎并没有得到正确的。
例如,如果我想从magic(5)读取中间值,我可以这样做: M = magic(5); value = M(3,3); 得到value == 13 。 我希望能够做到这样的事情之一: value = magic(5)(3,3); value = (magic(5))(3,3); 省去中间variables。 然而,MATLAB在第三个括号之前抱怨了Unbalanced or unexpected parenthesis or bracket括号。 是否有可能从一个数组/matrix中读取值,而不先将其分配给一个variables?