提问人:Milbot 提问时间:4/13/2023 最后编辑:Milbot 更新时间:4/13/2023 访问量:51
不确定输入在下面的代码中是如何分解的
Not sure how the input is broken up in below code
问:
所以我有一个问题,那就是我有一个维度为 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
感谢您的帮助!
答:
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)))
评论