标签: matrix

如何在Python中定义二维数组

我想定义一个没有初始化长度的二维数组,如下所示:

Matrix = [][]
Run Code Online (Sandbox Code Playgroud)

但它不起作用......

我已经尝试了下面的代码,但它也是错误的:

Matrix = [5][5]
Run Code Online (Sandbox Code Playgroud)

错误:

Traceback ...

IndexError: list index out of range
Run Code Online (Sandbox Code Playgroud)

我的错是什么?

python matrix syntax-error

665
推荐指数
22
解决办法
208万
查看次数

转置/解压缩功能(zip的反转)?

我有一个2项元组的列表,我想将它们转换为2个列表,其中第一个包含每个元组中的第一个项目,第二个列表包含第二个项目.

例如:

original = [('a', 1), ('b', 2), ('c', 3), ('d', 4)]
# and I want to become...
result = (['a', 'b', 'c', 'd'], [1, 2, 3, 4])
Run Code Online (Sandbox Code Playgroud)

是否有内置函数可以做到这一点?

python transpose list matrix

480
推荐指数
6
解决办法
15万
查看次数

如何在不首先将其分配给局部变量的情况下索引函数返回的MATLAB数组?

例如,如果我想从中读取中间值magic(5),我可以这样做:

M = magic(5);
value = M(3,3);
Run Code Online (Sandbox Code Playgroud)

得到value == 13.我希望能够做到这样的事情之一:

value = magic(5)(3,3);
value = (magic(5))(3,3);
Run Code Online (Sandbox Code Playgroud)

免除中间变量.然而,MATLAB抱怨Unbalanced or unexpected parenthesis or bracket在第一个括号之前3.

是否可以在不首先将其分配给变量的情况下从数组/矩阵中读取值?

indexing matlab matrix return-value variable-assignment

350
推荐指数
7
解决办法
7万
查看次数

numpy数组和矩阵之间有什么区别?我应该使用哪一个?

各有哪些优缺点?

从我所看到的情况来看,如果需要的话,任何一个都可以作为另一个的替代品,那么我是否应该使用它们或者我应该只坚持其中一个?

该计划的风格会影响我的选择吗?我正在使用numpy做一些机器学习,所以确实有很多矩阵,但也有很多向量(数组).

python arrays numpy matrix

318
推荐指数
5
解决办法
13万
查看次数

你如何旋转二维数组?

灵感来自Raymond Chen的帖子,假设你有一个4x4二维数组,写一个旋转90度的函数.Raymond链接到伪代码的解决方案,但我希望看到一些现实世界的东西.

[1][2][3][4]
[5][6][7][8]
[9][0][1][2]
[3][4][5][6]
Run Code Online (Sandbox Code Playgroud)

变为:

[3][9][5][1]
[4][0][6][2]
[5][1][7][3]
[6][2][8][4]
Run Code Online (Sandbox Code Playgroud)

更新:尼克的答案是最直接的,但有没有办法比n ^ 2做得更好?如果矩阵是10000x10000怎么办?

algorithm matrix multidimensional-array

295
推荐指数
16
解决办法
29万
查看次数

numpy.array形状(R,1)和(R,)之间的区别

numpy某些操作中,有些操作会返回,(R, 1)但有些操作会返回(R,).这将使矩阵乘法更加繁琐,因为reshape需要显式.例如,给定一个矩阵M,如果我们想要做的行数numpy.dot(M[:,0], numpy.ones((1, R)))在哪里R(当然,同样的问题也会出现在列中).我们会得到matrices are not aligned错误,因为M[:,0]是在外形(R,),但numpy.ones((1, R))在形状(1, R).

所以我的问题是:

  1. 形状(R, 1)和形状有什么区别(R,).我知道字面上它是数字列表和列表列表,其中所有列表只包含一个数字.只是想知道为什么不设计numpy使它有利于形状(R, 1)而不是(R,)更容易的矩阵乘法.

  2. 上面的例子有更好的方法吗?没有明确重塑像这样:numpy.dot(M[:,0].reshape(R, 1), numpy.ones((1, R)))

python numpy matrix multidimensional-array

280
推荐指数
4
解决办法
11万
查看次数

什么是最广泛使用的C++向量/矩阵数学/线性代数库,以及它们的成本和收益权衡?

似乎许多项目慢慢需要进行矩阵数学运算,并陷入首先构建一些向量类并慢慢添加功能的陷阱,直到它们被捕获构建一个半定制的自定义线性代数库,并依赖于它.

我想避免这种情况,而不依赖于一些切向相关的库(例如OpenCV,OpenSceneGraph).

有哪些常用的矩阵数学/线性代数库,为什么会决定使用另一个?有什么建议不要因某些原因使用?我特意在几何/时间上下文*(2,3,4 Dim)*中使用它,但将来可能会使用更高维数据.

我正在寻找以下任何方面的差异:API,速度,内存使用,广度/完整性,狭窄/特异性,可扩展性和/或成熟度/稳定性.

更新

我最终使用了Eigen3,我非常满意.

c++ math matrix linear-algebra

235
推荐指数
8
解决办法
14万
查看次数

炸弹丢弃算法

我有一个n x m由非负整数组成的矩阵.例如:

2 3 4 7 1
1 5 2 6 2
4 3 4 2 1
2 1 2 4 1
3 1 3 4 1
2 1 4 3 2
6 9 1 6 4
Run Code Online (Sandbox Code Playgroud)

"掉落炸弹"会使目标小区的数量和其所有八个邻居的数量减少一个,最小为零.

x x x 
x X x
x x x
Run Code Online (Sandbox Code Playgroud)

什么算法可以确定将所有单元减少到零所需的最小炸弹数量?

B选项(由于我不是一个细心的读者)

实际上问题的第一个版本并不是我想要回答的问题.我没有仔细阅读整个任务,还有其他限制,让我们说:

当行中的序列必须不增加时,简单问题怎么办:

8 7 6 6 5 是可能的输入序列

7 8 5 5 2 因为7 - > 8在序列中生长是不可能的.

也许找到"更容易"的案例的答案将有助于找到更难的解决方案.

PS:我相信当我们有几个相同的情况需要最少的炸弹来清除上线时,我们选择在该行的"左侧"使用大多数炸弹的一个.还有什么证据可能是正确的吗?

language-agnostic algorithm matrix

212
推荐指数
9
解决办法
2万
查看次数

numpy矩阵向量乘法

当我将两个numpy数组(nxn)*(nx 1)相乘时,得到一个大小为(nxn)的矩阵.遵循正常的矩阵乘法规则,期望一个(nx 1)向量,但我根本无法找到有关如何在Python的Numpy模块中完成此操作的任何信息.

问题是我不想手动实现它以保持程序的速度.

示例代码如下所示:

a = np.array([[ 5, 1 ,3], [ 1, 1 ,1], [ 1, 2 ,1]])
b = np.array([1, 2, 3])

print a*b
   >>
   [[5 2 9]
   [1 2 3]
   [1 4 3]]
Run Code Online (Sandbox Code Playgroud)

我想要的是:

print a*b
   >>
   [16 6 8]
Run Code Online (Sandbox Code Playgroud)

python arrays numpy vector matrix

167
推荐指数
1
解决办法
37万
查看次数

我应该使用data.frame还是矩阵?

应该何时使用a data.frame,何时使用matrix

两者都以矩形格式保存数据,因此有时候还不清楚.

有什么时候使用哪种数据类型有一般的经验法则吗?

r matrix dataframe r-faq

149
推荐指数
4
解决办法
9万
查看次数