NumPy数组与普通Python列表对比

-2 投票
1 回答
1655 浏览
提问于 2025-04-18 12:53

我正在开发一个程序,用来存储股票数据在一个数组里。这个程序还在进行中。它会从雅虎财经获取数据,并把这些数据存储在一个numpy数组中。如果股票价格达到新高,就会弹出一个提醒。

这里有几个问题:

  1. 为什么我需要使用numpy数组来完成这个功能,而不能用普通的列表呢?换句话说,numpy数组有什么好处或者特点?

  2. 你能告诉我怎么能更多地了解numpy.loadtxt吗?我试着去看了http://www.numpy.org

非常感谢,下面是我目前写的程序...

    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 个回答

1

一些有用的信息可以在这里这里找到。

numpy数组的主要优点是,在进行大多数数字运算时,它们比Python列表快得多。例如,把一个序列中的每个元素都乘以一个常数,或者把一个序列中的每个元素与另一个序列中对应的元素相乘,使用numpy会快得多。此外,对于多维结构,numpy数组支持更强大的索引功能,比如可以同时按行和列进行切片。

正因为这个根本的优势,numpy数组几乎成为了所有进行大量数字计算的Python项目的标准。这也意味着很多其他工具都是基于numpy数组构建的,比如用matplotlib画图,或者用scikit-learn进行机器学习等等。

撰写回答