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

问题描述:

在MATLAB中,如果我编写自己的函数,我可以将数组传递给该函数,并自动处理它。我试图在Python中使用另一种数据科学语言来做同样的事情,而不是处理它。如何在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) 
+0

我想你可能正在寻找的魔法是在numpy。例如,你可以这样做,如果语句与numpy.where。 –

+0

如果您的列表是一维的,也许您可​​以尝试诸如map(from_excel_ordinal,Dates)之类的东西。它会将这个函数应用于每个元素。 – Tristan

+0

你可以使用地图或lambda来做同样的事情,因为地图只是使用像日期=列表(地图(from_excel_ordinal,日期)) –

那么你可以使用地图函数,该函数。

Dates = from_excel_ordinal(Dates) 

替换从上面一行代码用下面的代码

Dates = list(map(from_excel_ordinal,Dates)) 

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

+0

太棒了,它的工作!谢谢。 – turbonate