英文:
Not sure how the input is broken up in below code
问题
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))
英文:
So I have the problem which is that I have an array of dimensions N x M and I have to find the sum of array=0 and then find the product of the result.
E.g. for:
1 2 \n
3 4
It would be 1+3 and 2+4 = 4 6 -> and the product of this is 4*6 = 24
I know that the correct code is:
`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))`
However I am confused because the sample input is:
2 2
1 2
3 4
With output:
24
The first line 2 2 is the dimensions of the array (N,M) and the 2nd and 3rd lines are the array values. My question is how does the code know to split the input() so that in the 2nd line of the code the input is: 2 2
And in the third line of the code the input is: 1 2
3 4
When I try this code:
`import numpy as np
input_str = '2 2\n1 2\n3 4\n'
N,M = map(int, input_str.split())
print(N,M)`
I get the error: ValueError: too many values to unpack (expected 2)
Which I take to mean that it expected '2 2' in input_str in the 3rd line
However, when I split it into 2 separate inputs:
`import numpy as np
input_1 = '2 2'
input_2 = '1 2\n3 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)))`
I get output: 384 which is not what I'm wanting.
Question is from this site: https://www.hackerrank.com/challenges/np-sum-and-prod/problem
Thanks for your assistance!
答案1
得分: 1
I guess you are spitting the input incorrectly. You should divide the second input line (input_2) into N lists, each containing M elements, as opposed to dividing it into a single list.
import numpy as np
input_1 = '2 2'
input_2 = '1 2\n3 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)))
Maybe this piece of code might help.
英文:
I guess you are spitting the input incorrectly. You should divide the second input line (input_2) into N lists, each containing M elements, as opposed to dividing it into a single list.
import numpy as np
input_1 = '2 2'
input_2 = '1 2\n3 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)))
Maybe this piece of code might help.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论