gpt4 book ai didi

python - 如何在 Python 的同一索引中将数组的每个数字相乘?

转载 作者:行者123 更新时间:2023-12-01 23:00:12 26 4
gpt4 key购买 nike

我必须编写这样一个乘以 an 的程序:第一个数组的第一个列表的第一个数字与第二个数组的第一个列表的第一个数字。例如:

Input
array1 = [[1,2,3], [3,2,1]]
array2 = [[4,2,5], [5,6,7]]

所以我的输出必须是:

result = [[4,4,15],[15,12,7]]

到目前为止,我的代码如下:

def multiplyArrays(array1,array2):
if verifySameSize(array1,array2):
for i in array1:
for j in i:
digitA1 = j
for x in array2:
for a in x:
digitA2 = a
mult = digitA1 * digitA2
return mult
return 'Arrays must be the same size'

可以肯定地说它不起作用,因为我给出的示例得到的结果是 7 ,甚至不是数组,所以,我做错了什么?

最佳答案

如果您想要一个简单的解决方案,请使用 numpy:

import numpy as np

array1 = np.array([[1,2,3], [3,2,1]])
array2 = np.array([[4,2,5], [5,6,7]])

result = array1 * array2

如果你想要一个通用的解决方案供你自己理解,那么它就变得有点困难:你希望实现的深度如何?有很多检查,例如相同的尺寸、相同的类型、尺寸的数量等。

您代码中的问题是使用 for each loop 而不是索引。 for i in array1 运行两次,返回一个列表(首先是 [1,2,3],然后是 [3,2,1])。然后你在每个列表中做一个 for each 循环返回一个数字,这意味着你只得到 1 个数字作为输出,这是最后一个操作的结果 (1 * 7 = 7)。您应该创建一个空列表并将您的结果附加到一个正常的 for 循环中(而不是每个)。

所以你的函数变成了:

def multiplyArrays(array1,array2):
result = []
for i in range(len(array1)):
result.append([])
for j in range(len(array1[i])):
result[i].append(array1[i][j]*array2[i][j])
return result

虽然这是个坏主意,因为它只适用于二维数组并且没有检查。除非绝对需要,否则请避免编写自己的函数。

关于python - 如何在 Python 的同一索引中将数组的每个数字相乘?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72105496/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com