我有一个问题,我有一个维度为N x M的数组我必须找到数组=0的和,然后找到结果的乘积
。:1 2 n3 4
应该是1+3和2+4 = 4 6 ->它的乘积是4*6 = 24
我知道正确的代码是:`import numpy
N, M = map(int, input().split())
A = numpy.array([input().split() for _ in range(N)],int)
print(numpy.prod(numpy.sum(A, axis=0), axis=0))`
然而,我很困惑,因为样本输入是:2 - 21 23 4
输出:24
第一行22是数组的尺寸(N,M),第二行和第三行是数组的值。我的问题是代码如何知道分割输入(),以便在代码的第二行输入是:2 2在第三行代码中,输入是:1 23 4
当我尝试这个代码时:
`import numpy as np
input_str = '2 2n1 2n3 4n'
N,M = map(int, input_str.split())
print(N,M)`
ValueError: too many values to unpack (expected 2)
我认为这意味着它在第三行
的input_str中期望'2 2'然而,当我把它分成两个单独的输入时:
`import numpy as np
input_1 = '2 2'
input_2 = '1 2n3 4'
N, M = map(int, input_1.split())
my_arr = [list(map(int, input_2.split())) for _ in range(N)]
print(np.prod(np.sum(my_arr, axis=0)))`
我得到的输出:384,这不是我想要的。
问题来自这个网站:https://www.hackerrank.com/challenges/np-sum-and-prod/problem
谢谢你的帮助!
我猜你输入不正确。您应该将第二个输入行(input_2)划分为N个列表,每个列表包含M个元素,而不是将其划分为单个列表。
import numpy as np
input_1 = '2 2'
input_2 = '1 2n3 4'
N, M = map(int, input_1.split())
my_arr = [list(map(int, input_2.split()))[i:i+M] for i in range(0, len(input_2.split()), M)]
print(np.prod(np.sum(my_arr, axis=0)))
也许这段代码会有帮助。