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
您可以这样做:
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