如何在Python中的数据数组上执行我的函数?

时间:2017-03-10 04:00:36

标签: python arrays

在MATLAB中,如果我编写自己的函数,我可以将数组传递给该函数,并自动处理它。我试图用Python,另一种数据科学语言做同样的事情,而且它没有处理它。

每次我想对数组中的所有值进行操作时,是否有一种简单的方法可以执行此操作而无需进行循环操作?这需要做更多的工作!似乎在Python中工作的伟大思想之前会有这样的需求。

我尝试将数据类型切换为list(),因为这是可迭代的,但这似乎不起作用。我仍然得到一个错误,基本上说它不想要一个数组对象。

这是我的代码:

import scipy
from collections import deque
import numpy as np
import os
from datetime import date, timedelta

def GetExcelData(filename,rowNum,titleCol):
    csv = np.genfromtxt(filename, delimiter= ",")
    Dates = deque(csv[rowNum,:])
    if titleCol == True:
        Dates.popleft()
    return list(Dates)

def from_excel_ordinal(ordinal, _epoch=date(1900, 1, 1)):
    if ordinal > 59: #the function stops working here when I pass my array
        ordinal -= 1  # Excel leap year bug, 1900 is not a leap year!
    return _epoch + timedelta(days=ordinal - 1)  # epoch is day 1

os.chdir("C:/Users/blahblahblah")
filename = "SamplePandL.csv"
Dates = GetExcelData(filename,1,1)
Dates = from_excel_ordinal(Dates) #this is the call with an issue
print(Dates)

1 个答案:

答案 0 :(得分:1)

你可以使用map功能。

Dates = from_excel_ordinal(Dates)

使用以下代码

替换代码中的上述行
Dates = list(map(from_excel_ordinal,Dates))

在上面的代码中,对于Dates中存在的每个值,将调用from_excel_ordinal函数。最后它被转换成列表并存储到日期。