Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将一个数组的每个元素乘以另一个数组的各个部分?_Javascript_Python_Arrays_Matrix Multiplication - Fatal编程技术网

Javascript 如何将一个数组的每个元素乘以另一个数组的各个部分?

Javascript 如何将一个数组的每个元素乘以另一个数组的各个部分?,javascript,python,arrays,matrix-multiplication,Javascript,Python,Arrays,Matrix Multiplication,我是编程新手,我想知道如何乘法 [1,1,0] 到 用于下一个结果输出 [4,9,7,2,0,0] 正如你们所看到的,我想把[1,1,0]数组中的每一个值乘以第二个数组中的每两个值 [1..] * [4,9..] = [4,9] [.1.] * [.7,2.] = [7,2] [..0] * [..1,6] = [0,0] 例如在js中,我写了如下内容 var firstArray = [1,1,0]; var secondArray = [4,9,7,2,1,6]; var shift

我是编程新手,我想知道如何乘法

[1,1,0]

用于下一个结果输出

[4,9,7,2,0,0]
正如你们所看到的,我想把[1,1,0]数组中的每一个值乘以第二个数组中的每两个值

[1..] * [4,9..] = [4,9]
[.1.] * [.7,2.] = [7,2]
[..0] * [..1,6] = [0,0]
例如在js中,我写了如下内容

var firstArray = [1,1,0];
var secondArray = [4,9,7,2,1,6];
var shift = secondArray / firstArray;
var startpos = 0;
var outArray = [];

for(i=0; i< firstArray.length; i++){
    for(z=i; z< shift+i; z++){
        outArray.push(firstArray[i] * secondArray[z]);
    }
}

console.log(outArray);
var firstArray=[1,1,0];
var secondArray=[4,9,7,2,1,6];
var shift=secondArray/firstArray;
var startpos=0;
var outArray=[];
对于(i=0;i

它可能在python中

在Javascript中,您可以通过使用

  • 用于迭代因子并返回新数组

  • 用于在与结果集相乘后添加零件结果

  • ,仅获取值数组的两个元素

  • 用于将零件数组与给定因子相乘

  • 至少使用一个数组作为
    reduce
    的起始值

var因子=[1,1,0],
值=[4,9,7,2,1,6],
结果=因子。减少(
(r,f,i)=>r.concat(
价值观
.切片(i*2,(i+1)*2)
.map(v=>f*v)
),
[]
);

控制台日志(结果)您可以滥用
zip
和列表切片:

a = [1, 1, 0]
b = [4, 9, 7, 2, 1, 6]

shift = len(b) // len(a)  # use / in Python 2
li = []
for num_a, num_b1, num_b2 in zip(a, b[::shift], b[1::shift]):
    li.extend([num_a * num_b1, num_a * num_b2])

print(li)
# [4, 9, 7, 2, 0, 0]

通过将输入设置为2D数组,可以将其表示为标准矩阵乘法

我从这里得到了乘法算法:

现在的计算结果如下所示:

[1,0,0]   [4,9]   [4,9]
[0,1,0] * [7,2] = [7,2]
[0,0,0]   [1,6]   [0,0]
函数多重矩阵(m1,m2){ var结果=[]; 对于(变量i=0;i
您可以这样做:

  • 迭代第一个数组,以便得到一个要乘法的数字

  • 然后从目标数组中提取两个元素并相乘,将结果存储在res数组中

  • var mul=[1,1,0];
    var目标=[4,9,7,2,1,6];
    var start=0;
    var-res=[];
    多个forEach(函数(v,i){
    var arr=target.slice(start,start+2);//从开始索引中提取两个
    //元素
    arr.forEach(函数(val,i){
    res.push(v*val);
    });
    启动+=2;
    });
    控制台日志(res)您可以在array2上使用
    map()
    ,并使用一个变量为每两个元素增加array1的索引,然后将array1的当前元素与array2中索引为该变量的元素相乘

    var a1=[1,1,0];
    VarA2=[4,9,7,2,1,6];
    var j=0;
    var结果=a2.map(函数(e,i){
    如果(i%2==0&&i!=0)j++
    返回e*a1[j];
    })
    
    log(result)
    python
    中,您可以使用以下代码。我假设第二个数组的长度更大,它可以被较短数组的长度整除

    def multiply(a, b):
        x, y = len(a), len(b)                        # Find lengths
        assert x % y == 0                            
        n = x / y
        result = [a[i] * b[i / n] for i in range(x)] # For each index in a, calculate the appropriate element in output by multiplying with relevant part
        print result
    

    对于本例中使用的
    shift
    是什么?@Richy作为切片“skip”参数,我编辑了答案谢谢大家!你是awesome@DeepSpace现在有了意义:-)您正在寻找一个只使用python或javascript的解决方案?
    def multiply(a, b):
        x, y = len(a), len(b)                        # Find lengths
        assert x % y == 0                            
        n = x / y
        result = [a[i] * b[i / n] for i in range(x)] # For each index in a, calculate the appropriate element in output by multiplying with relevant part
        print result