NumPy数组与常规Python列表

时间:2014-07-11 01:58:38

标签: python arrays numpy

我正在开发一个将库存数据存储在数组中的程序。该计划仍在进行中。该程序从雅虎财务中提取数据,数据存储在一个numpy数组中。如果库存达到新的高位,则会弹出警报。

以下是一些问题:

  1. 为什么我必须使用numpy数组来执行此函数而不是常规列表?换句话说,numpy数组的优点或特征是什么?

  2. 您能告诉我如何了解有关numpy.loadtxt的更多信息吗?我试着寻找http://www.numpy.org

  3. 非常感谢,以下是我到目前为止的计划......

        import urllib2
        import time
        import datetime
        import numpy as np
        import matplotlib.pyplot as plt
        import matplotlib.ticker as mticker
        import matplotlib.dates as mdates
    
    
        def pullData(stock):                    
    
        try:
            print 'Pulling ' + stock 
            print str(datetime.datetime.fromtimestamp(int(time.time())).strftime('%Y-%m-%d    %H:%M:%S'))
    
        urltovisit = 'http://chartapi.finance.yahoo.com/instrument/1.0/'+stock+'/chartdata;type=quote;range=1d/csv' 
        stockFile = []
        try:
            f = urllib2.urlopen(urltovisit)      
            sourceCode = f.read().decode('utf-8')         
            splitSource = sourceCode.split('\n')              
    
            for eachLine in splitSource:                
                splitLine = eachLine.split(',')         
                fixMe = splitLine[0]
                if len(splitLine) == 6:                 
                     if 'values' not in eachLine:       
                         fixed =  eachLine.replace(fixMe,str(datetime.datetime.fromtimestamp(int(fixMe)).strftime('%Y-%m-%d %H:%M:%S')))
                         stockFile.append(fixed)
        except Exception, e:
            print str(e), 'failed to organize pulled data'
    
        date, closep, highp, lowp, openp, volume = np.loadtxt(stockFile,delimiter=',', unpack=True, converters={ 0: mdates.strpdate2num('%Y-%m-%d %H:%M:%S')})
    
        if highp[-1] == max(highp):
            print stock + ' New high ' + str(max(highp)) 
        else:
            print ' no new high '
    except Exception, e:
        print str(e), 'failed to pull pricing data'
    
    
      stockName = raw_input('Enter a stock: ')   
      pullData(stockName)
    

1 个答案:

答案 0 :(得分:1)

可以找到一些有用的信息herehere

numpy数组的主要优点是它们在执行大多数数值运算时比Python列表快得多。例如,将序列中的每个元素乘以一个其他常量,或者将一个序列中的每个元素乘以另一个序列中的对应元素,在numpy中要快得多。此外,对于多维结构,numpy数组支持更强大的索引,例如允许您按行和列进行切片。

由于这一基本优势,numpy数组已经成为基本上每个执行大量数字运算的Python项目的事实标准。这意味着许多其他工具都是基于numpy数组构建的(例如,使用matplotlib绘图,使用scikit-learn进行机器学习等)。