python - 基于另一个参考附加
问题描述
我允许使用 Numpy 完成任务。
我需要用两个列表显示一个月的总销售额:日期和销售额。
我的方法是通过从日期中剥离月份、创建 2D 矩阵并添加每个月检查的值来列出一个月内的所有销售额。
import numpy as np
dates = ["02/01/19", "03/02/19"]
sales = ["10.50", "12.20"]
month = [x.strip("0").split("/")[0] for x in dates]
monthsales = np.vstack((month, sales)).astype(np.float)
def monthlysales():
jan = []
for i in monthsales[0, 0:]:
if i == 1:
jan.append()
s = input("Pick month: ")
if s == "1":
print("Sales total for Jan is:", np.sum(jan), "USD")
else:
print("Not a valid month")
return
print(monthsales)
print(monthlysales())
问题是我不知道要附加什么,以便它占用矩阵的第二行,这将完成代码
解决方案
保持逻辑的解决方案:
在这里,我循环遍历月份(就像你做的那样,但在这里使用enumerate
),并寻找月份等于 1 的时间。使用enumerate
允许我们知道月份等于 1 时的列号(id
)。然后只需在我们感兴趣的月份添加销售额(第 1 行)(id
)
import numpy as np
dates = ["02/01/19", "03/02/19"]
sales = ["10.50", "12.20"]
month = [x.strip("0").split("/")[0] for x in dates]
monthsales = np.vstack((month, sales)).astype(np.float)
def monthlysales():
jan = []
# Loop over months with enumerate
for id, month in enumerate(monthsales[0]):
if month == 1:
# Append sales (row 1) at column id
jan.append(monthsales[1, id])
s = input("Pick month: ")
if s == "1":
print("Sales total for Jan is:", np.sum(jan), "USD")
else:
print("Not a valid month")
print(monthsales)
print(monthlysales())
当然,由于您可以使用 numpy,因此您可以完全避免任何循环。考虑以下行:
monthsales[1, monthsales[0] == 1].sum()
这在一行中总结了所有 1 月份的销售额。没有循环。对于任何合理数量的数据,这将比使用enumerate
.
看起来更像您可能拥有的初始解决方案:
def monthlysales():
s = int(input("Pick month: "))
if s >= 1 and s <= 12:
monies = monthsales[1, monthsales[0] == s].sum()
print("Sales total for month {} is {} USD".format(s, monies))
else:
print("Not a valid month")
推荐阅读
- ruby - Capybara / Ruby / Cucumber - 使命令期望在证据中突出显示
- c# - 如何在注销或无效用户凭据时删除身份 cookie
- delphi - Delphi ActionMainMenuBar 类别位置
- excel - 两次关闭工作簿时的奇怪行为
- postgresql - docker-compose postgres 卷将所有权更改为 gitlab-runner
- django - How to initialize class properties in inherited models
- javascript - 未定义索引上传
- go - 如何轻松包含 routes.go?
- c# - 带有黄色图标的 Visual Studio 2019 项目依赖关系
- r - 神经网络中的 2 个而不是 1 个输出节点