不确定输入在下面的代码中是如何分解的

Not sure how the input is broken up in below code

提问人:Milbot 提问时间:4/13/2023 最后编辑:Milbot 更新时间:4/13/2023 访问量:51

问:

所以我有一个问题,那就是我有一个维度为 N x M 的数组,我必须找到 array=0 的总和,然后找到结果的乘积。

例如: 1 2 \n 0 瓦

它将是 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 2 1 2 0 瓦

带输出: 24

第一行 2 2 是数组的维度 (N,M),第 2 行和第 3 行是数组值。我的问题是代码如何知道拆分 input(),以便在代码的第二行中输入为:2 2 在代码的第三行中,输入为:1 2 0 瓦

当我尝试此代码时:

`import numpy as np
input_str = '2 2\n1 2\n3 4\n'
N,M = map(int, input_str.split())
print(N,M)`

我收到错误:ValueError:太多值无法解压缩(预期 2)

我的意思是它期望在第 3 行的 input_str 中出现“2 2”

但是,当我将其拆分为 2 个单独的输入时:

`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)))`

我得到输出:384,这不是我想要的。

问题来自本网站:https://www.hackerrank.com/challenges/np-sum-and-prod/problem

感谢您的帮助!

Python 数组 字典 输入

评论

0赞 Kelly Bundy 4/13/2023
“第一行 2 2”——嗯?整个“2 2 1 2 3 4”在同一条线上......

答:

1赞 Tima 4/13/2023 #1

我猜你吐错了输入。您应该将第二行 (input_2) 划分为 N 个列表,每个列表包含 M 个元素,而不是将其划分为单个列表。

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)))

也许这段代码可能会有所帮助。

评论

0赞 Milbot 4/14/2023
这很奇怪 - 使用我上面发布的第三组代码:我在不同的控制台中得到了不同的答案。当我使用一个控制台时,我得到 24(正确答案),而当我使用 pycharm 时,我得到 384。有谁知道为什么会这样??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)))