天天看點

資料分析之NumPy(四)ndarray運算

ndarray運算

邏輯運算

# 重新生成8隻股票10個交易日的漲跌幅資料
stock_change = np.random.normal(0, 1, (8, 10))
stock_change
           
資料分析之NumPy(四)ndarray運算
stock_change = stock_change[0:5, 0:5]
stock_change
           
資料分析之NumPy(四)ndarray運算
# 邏輯判斷, 如果漲跌幅大于0.5就标記為True 否則為False
stock_change > 0.5
           
資料分析之NumPy(四)ndarray運算
# BOOL指派, 将滿足條件的設定為指定的值-布爾索引
stock_change[stock_change > 0.5] = 1
           
資料分析之NumPy(四)ndarray運算

通用判斷函數

  • np.all(),全部為真才是真
# 判斷stock_change[0:2, 0:5]是否全是上漲的
np.all(stock_change[0:2, 0:5] > 0)
           
資料分析之NumPy(四)ndarray運算
  • np.any() 隻要有真就是真
# 判斷前5隻股票這段期間是否有上漲的
np.any(stock_change[0:5, :] > 0 )
           
資料分析之NumPy(四)ndarray運算

np.where(三元運算符)

通過使用np.where能夠進行更加複雜的運算

  • np.where()
# 判斷前四個股票前四天的漲跌幅 大于0的置為1,否則為0
temp = stock_change[:4, :4]
np.where(temp > 0, 1, 0)
           
資料分析之NumPy(四)ndarray運算
資料分析之NumPy(四)ndarray運算
資料分析之NumPy(四)ndarray運算
  • 複合邏輯需要結合np.logical_and和np.logical_or使用
# 判斷股票的漲跌幅 大于0.5并且小于1的,換為1,否則為0
# 判斷股票的漲跌幅 大于0.5或者小于-0.5的,換為1,否則為0
np.where(np.logical_and(stock_change > 0.5, stock_change < 1), 1, 0)
np.where(np.logical_or(stock_change > 0.5, stock_change < -0.5), 1, 0)
           
資料分析之NumPy(四)ndarray運算
資料分析之NumPy(四)ndarray運算

統計運算

如果想要知道漲幅或者跌幅最大的資料,應該怎麼做?

統計名額

在資料挖掘/機器學習領域,統計名額的值也是我們分析問題的一種方式。常用的名額如下:

  • min(a[, axis, out, keepdims])最小

    Return the minimum of an array or minimum along an axis.

  • max(a[, axis, out, keepdims])最大

    Return the maximum of an array or maximum along an axis.

  • median(a[, axis, out, overwrite_input, keepdims])取中值

    Compute the median along the specified axis.

  • mean(a[, axis, dtype, out, keepdims])平均值

    Compute the arithmetic mean along the specified axis.

  • std(a[, axis, dtype, out, ddof, keepdims])标準差

    Compute the standard deviation along the specified axis.

  • var(a[, axis, dtype, out, ddof, keepdims])方差

    Compute the variance along the specified axis.

進行統計的時候,axis 軸的取值并不一定,Numpy中不同的API軸的值都不一樣,在這裡,axis 0代表列, axis 1代表行去進行統計

資料分析之NumPy(四)ndarray運算

股票漲跌幅統計運算

# 接下來對于這4隻股票的4天資料,進行一些統計運算
# 指定行 去統計
print("前四隻股票前四天的最大漲幅{}".format(np.max(temp, axis=1)))

# 使用min, std, mean
print("前四隻股票前四天的最大跌幅{}".format(np.min(temp, axis=1)))
print("前四隻股票前四天的波動程度{}".format(np.std(temp, axis=1)))
print("前四隻股票前四天的平均漲跌幅{}".format(np.mean(temp, axis=1)))
           
資料分析之NumPy(四)ndarray運算

如果需要統計出哪一隻股票在某個交易日的漲幅最大或者最小?

  • np.argmax(temp, axis=)
  • np.argmin(temp, axis=)
# 擷取股票指定哪一天的漲幅最大
print("前四隻股票前四天内漲幅最大{}".format(np.argmax(temp, axis=1)))
print("前四天一天内漲幅最大的股票{}".format(np.argmax(temp, axis=0)))
           
資料分析之NumPy(四)ndarray運算

另外:

資料分析之NumPy(四)ndarray運算

版權聲明:

筆者部落格文章主要用來作為學習筆記使用,内容大部分整理自網際網路,如有侵權,請聯系部落客删除!

繼續閱讀