2-ndarray 的运算

1:逻辑运算

import numpy as np
​
# 重新生成8只股票10个交易日的涨跌幅数据
a = np.random.normal(0,1,(8,10))
a = a[0:5,0:5]
a>0.5
array([[False,  True, False,  True, False],
       [ True, False, False,  True, False],
       [False, False, False, False, False],
       [ True, False, False, False, False],
       [False, False, False, False,  True]])

# BOOL赋值, 将满足条件的设置为指定的值-布尔索引
a[a>0.5] = 1
a
array([[ 0.42239475,  1.        , -0.96660481,  1.        , -2.01321414],
       [ 1.        , -0.25925804, -0.98642109,  1.        , -0.0340934 ],
       [-1.31676248, -1.18798167, -0.06931818,  0.33404852, -0.5186317 ],
       [ 1.        , -0.93588204, -0.75465725, -0.46047116, -0.26881438],
       [-0.6638155 , -0.92471488, -0.81871078,  0.05119344,  1.        ]])

2:通用判断函数

  • np.all()

  

# 判断a[0:2, 0:5]是否全时上涨
np.all(a[0:2,0:5]>0)

False
  • np.any()
# 判断a[0:2, 0:5]是否全时上涨
np.all(a[0:2,0:5]>0)
True

 

3: np.where (三元运算符)

 

# 判断前四个股票前四天的涨跌幅 大于0的置为1,否则为0
np.where(a[0:4,0:4]>0,1,0)
array([[0, 1, 1, 1, 1],
       [1, 0, 1, 1, 0],
       [1, 1, 0, 0, 1],
       [1, 1, 1, 0, 0],
       [1, 1, 1, 0, 1]])

# 判断前四个股票前四天的涨跌幅 大于0.5并且小于1的,换为1,否则为0
# 判断前四个股票前四天的涨跌幅 大于0.5或者小于-0.5的,换为1,否则为0
np.where(np.logical_and(temp > 0.5, temp < 1), 1, 0)
np.where(np.logical_or(temp > 0.5, temp < -0.5), 1, 0)
array([[0, 1, 1, 1, 1],
       [1, 0, 1, 1, 0],
       [1, 1, 0, 0, 1],
       [1, 1, 1, 0, 0],
       [1, 1, 1, 0, 1]])

 

4:统计运算

arr = np.array([5,2,3,6,7,1])
arr.sort()
#数组的升序排序
print(arr)
[1 2 3 5 6 7]

arr2 = np.array([[8,3,1,2],[9,3,1,6]])
#纵向
arr2.sort(axis=0)
print(arr2)

[[8 3 1 2]
 [9 3 1 6]]
#横向
arr2.sort(axis=1)
print(arr2)
[[1 2 3 8]
 [1 3 6 9]]

#返回培训后的索引
print(arr2.argsort())
print(arr2.argsort())
[[0 1 2 3]
 [0 1 2 3]]
[[0 1 2 3]
 [0 1 2 3]]

#去重
name = np.array(['小明','小红','小强','小红'])
print(np.unique(name))
['小强' '小明' '小红']

#复重  tile   对数组进行复重
print(np.tile(arr2,2))#把数组2 重复两次

#repeat  对元素进行复重
print(arr2.repeat(2,axis=0))
print(arr2.repeat(2,axis=1))

[[1 2 3 8 1 2 3 8]
 [1 3 6 9 1 3 6 9]]
[[1 2 3 8]
 [1 2 3 8]
 [1 3 6 9]
 [1 3 6 9]]
[[1 1 2 2 3 3 8 8]
 [1 1 3 3 6 6 9 9]]


#以下函数用法一致
#求和
print(np.sum(arr2))
print(np.sum(arr2,axis=0))
print(np.sum(arr2,axis=1))
#均值
np.mean()
#保准差
np.std()
#方差
np.var()
#最下值
np.min()
#最大值
np.max()
#最小值索引
np.argmin()
#最大值索引
np.argmax()
#累计积
np.cumprod()
#累计和
np.cumsum()

 

posted on 2021-06-07 12:35  paike123  阅读(73)  评论(0编辑  收藏  举报

导航