根据其他参考附加

时间:2019-06-30 08:07:21

标签: python numpy

允许我将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())

问题是我不知道要追加什么内容,因此它占用了矩阵的第二行,这将完成代码

1 个答案:

答案 0 :(得分:0)

解决方案保持逻辑

我在这里循环搜索月份(与您一样,但是这里使用Autocomplete),并查找月份等于1的时间。使用enumerate可以让我们知道when的列号。月份等于1(enumerate)。然后,只需在我们感兴趣的月份(id)附加销售额(第1行)

id

当然,由于允许使用numpy,因此可以完全避免任何循环。考虑以下行:

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

这将一行中所有一月月份的销售额汇总起来。没有循环。对于任何合理的数据量,这将比使用monthsales[1, monthsales[0] == 1].sum() 的解决方案要快得多。

看起来更像您的最初解决方案,

enumerate