1. numpy array, tuple的轉換問題
Python中的list与NumPy中array的区别 及相互转换
>>> a=numpy.array([[1,2,3],[4,5,6]])
>>> a
array([[1, 2, 3],
[4, 5, 6]])
>>> tuple(a.reshape(1, -1)[0])
(1, 2, 3, 4, 5, 6)
class CandlestickItem(pg.GraphicsObject):
def __init__(self, data):
pg.GraphicsObject.__init__(self)
self.data = data ## data must have fields: time, open, close, min, max
self.generatePicture()
def generatePicture(self):
## pre-computing a QPicture object allows paint() to run much more quickly,
## rather than re-drawing the shapes every time.
self.picture = QtGui.QPicture()
p = QtGui.QPainter(self.picture)
p.setPen(pg.mkPen('w'))
#w = (self.data[1][0] - self.data[0][0]) / 3.
w = 0.333
for (t, open, close, min, max) in self.data:
p.drawLine(QtCore.QPointF(t, min), QtCore.QPointF(t, max))
if open > close:
p.setBrush(pg.mkBrush('r'))
else:
p.setBrush(pg.mkBrush('g'))
p.drawRect(QtCore.QRectF(t-w, open, w*2, close-open))
p.end()
出現錯誤-> 發現程式中的時間 t必須為數字1, 2, 3, ...才能正常運作,
所以使用range()來產生數字1,2,3,...
說明:range() 函數的回傳資料型態為 range,無法使用 print() 列印出其值,實務上會使用list() 函數將其轉換成串列(list)型態的資料
(1) range(n):表示產生 0 至 n-1 的數列
範例:產生0至10的數列
>>> a=range(11)
>>> type(a)
<class 'range'> #由range函數產生的資料型態為range
>>> a=list(a) #使用list()函數來轉換成串列型態
>>> print(a)
執行結果:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
(2) range(start,end):start為起始值,end為終止值,產生 start 至 end-1 的數列
範例:產生1至10的數列
>>> a=list(range(1,11))
>>> print(a)
執行結果:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
(1) range(n):表示產生 0 至 n-1 的數列
範例:產生0至10的數列
>>> a=range(11)
>>> type(a)
<class 'range'> #由range函數產生的資料型態為range
>>> a=list(a) #使用list()函數來轉換成串列型態
>>> print(a)
執行結果:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
(2) range(start,end):start為起始值,end為終止值,產生 start 至 end-1 的數列
範例:產生1至10的數列
>>> a=list(range(1,11))
>>> print(a)
執行結果:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
## fields are (time, open, close, min, max).
N=50
#data_time_range = list(range(1,N+1))
data_time = list(tw_kbar1m.GetTime()[2:N])
data_time1=[i.strftime("%M:%S") for i in data_time]
data_time2 = tuple(data_time1)
data_time3 = tuple(range(3,N+1))
data_open = tuple(tw_kbar1m.GetOpen()[2:N])
data_close = tuple(tw_kbar1m.GetClose()[2:N])
data_low = tuple(tw_kbar1m.GetLow()[2:N])
data_high = tuple(tw_kbar1m.GetHigh()[2:N])
data1=[data_time3,data_open,data_close,data_low,data_high]
data2=list(zip(data_time3,data_open,data_close,data_low,data_high))
## fields are (time, open, close, min, max).
N1=300
N=600
#data_time_range = list(range(1,N+1))
data_time = list(tw_kbar1m.GetTime()[N1:N])
data_time1=[i.strftime("%M:%S") for i in data_time]
data_time2 = tuple(data_time1)
data_time3 = tuple(range(N1+1,N+1))
data_open = tuple(tw_kbar1m.GetOpen()[N1:N])
data_close = tuple(tw_kbar1m.GetClose()[N1:N])
data_low = tuple(tw_kbar1m.GetLow()[N1:N])
data_high = tuple(tw_kbar1m.GetHigh()[N1:N])
data1=[data_time3,data_open,data_close,data_low,data_high]
data2=list(zip(data_time3,data_open,data_close,data_low,data_high))
沒有留言:
張貼留言