在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)
答案 0 :(得分:1)
你可以使用map功能。
Dates = from_excel_ordinal(Dates)
使用以下代码
替换代码中的上述行Dates = list(map(from_excel_ordinal,Dates))
在上面的代码中,对于Dates中存在的每个值,将调用from_excel_ordinal函数。最后它被转换成列表并存储到日期。