基于另一个数组中包含的索引的数组值

时间:2015-03-11 13:08:31

标签: python arrays matlab

作为序言,我是一个非常弱的程序员,我正在努力学习Python。我有一个MATLAB .m文件,我正在尝试将其翻译成Python。我遇到问题的MATLAB部分是:

R(i+1,1)=mod(sum(b(a)),2)
    where
b = [4 5 6]
a = [3 1]

背景:b中的列数是a中包含的最大值。我可以为a和b输入任何数组,只要b的大小正确。

基于上面的例子,我知道意图是(b [3] + b [1])mod(2)=(6 + 4)mod(2)= 0.我只是不确定如何在Python中实现这一点。如果我可以提供任何其他详细信息,请告诉我。谢谢你的帮助!

3 个答案:

答案 0 :(得分:0)

我将如何做到这一点:

import numpy
a = numpy.array([3, 1])
b = numpy.array([4, 5, 6, 9]) #keep in mind that python index starts at 0
R[i+1, 1] = numpy.mod(sum(b[a]), 2)

答案 1 :(得分:0)

r[i+1,1]=sum([b[x-1] for x in a]) % 2

[]创建一个列表和 b [x-1]注意索引,因为python中的索引从0开始。对于a中的每个x的简单单词,计算b [x-1]然后从它们创建一个列表然后对列表求和并最后取mod 2。

其中b和a定义为     B = [4,5,6]     A = [3,1] 和r可以是列表列表,从而使其成为矩阵。

如果你不理解它,请告诉我......

答案 2 :(得分:0)

考虑使用numpynumpy是从MATLAB过渡到Python并使用大量相同语法的最佳方法。还要记住,numpy开始索引为0,而不是像MATLAB中那样开始索引。因此,您需要更改a,以便在将所有索引用于索引b时将其减去1。您还需要更改索引到R的方式,以便0是起始索引,而不是1。

假设R也是numpy数组,请执行:

import numpy as np

# Place other code here...
#...
#...

a = np.array([2, 0]) # change, or you can do a = np.array([3, 1]) - 1
b = np.array([4, 5, 6, 9])
R[i, 0] = np.mod(np.sum(b[a]), 2)