我想看看是否有办法比较矩阵的列与同一矩阵的所有其他列,而不使用循环。显然,结果可能非常大,并且对于[m×n]矩阵,其尺寸将随n ** 2增大。但是,如果有合理的价值,那么希望是可能的。
具体来说,我有一个矩阵,如:
| 1 -1 1 1 -1 |
| -1 -1 1 1 1 |
| -1 1 -1 -1 1 |
| 1 -1 1 -1 1 |
需要为所有列组合获取AND和XOR值(或其他逻辑比较)。这可能没有循环吗?我是Python,R和Octave的新手,但已经多次遇到过类似的问题。因此,最受欢迎的是Python或其他语言的解决方案!
示例:
| 1 -1 1 | | 2 0 2 0 -2 0 2 0 1 |
| 1 1 -1 | => | 2 2 0 2 2 0 0 0 -2 |
|-1 1 1 | |-2 0 0 0 2 2 0 2 2 |
[第1列+矩阵,第2列+矩阵,第3列+矩阵]
它变得非常快。有很多重复,例如我不需要添加一个列,我不需要将每个列与所有其他列进行比较,但更好的是所有具有更高列数的列(在右侧)侧)。也许像上面的例子那样更容易实现它。也许这是不可能的!我可以想象这是一种快速吸收所有可用内存的功能!
答案 0 :(得分:0)
我不知道您的问题解决方案是否有一些内置机制。但是我有一些可能对你有帮助的东西。
import numpy as np
a = np.random.random_integers(0,6,(300,300))
b = np.random.random_integers(0,6,(300,300))
for i in xrange(300):
a = np.roll(a, 1, axis=a)
###Do whatever you want to do with a and b
此处将生成矩阵a的所有组合,以便您可以根据您的使用情况使用它。
而你不想使用循环可能是因为时间效率。但由于numpy改进库
,这将更快地工作我是第一次在StackOverflow上写答案。所以,如果你发现它错了那么抱歉!
refrance:http://docs.scipy.org/doc/numpy/reference/generated/numpy.roll.html