Numpy-ndarray运算

一、逻辑运算

1.布尔运算

​  通过< , >号判断数组全部值是否符合条件,如是否大于1,大于1会置为True,小于1会置为False

#生成0到1之间,8行10列均匀分布的数组
stock_change = np.random.normal(0,1,(8,10))
#大于0.5的值置为True,否则置为False
stock_change > 0.5

array([[False, False, False, False, False, False, False, False, False,
         True],
       [False,  True, False, False, False, False, False, False, False,
         True],
       [False,  True, False,  True,  True,  True, False, False,  True,
        False],
       [ True,  True, False, False, False, False, False, False, False,
        False],
       [False, False, False,  True, False, False,  True, False,  True,
        False],
       [False,  True, False, False,  True,  True,  True, False, False,
         True],
       [ True, False,  True,  True, False, False, False, False, False,
        False],
       [ True, False,  True,  True,  True, False, False,  True, False,
        False]])
#将大于0.5的数置为1.1
stock_change[stock_change>0.5]=1.1

2.通用判断函数

  np.all(布尔值)

​  只要有一个False,就返回False;只有全是True才返回True

np.all( stock_change[0:2,0:5]>0)

False

  np.any(布尔值)

​  只要有一个True,就返回True;只有全是False才返回False

np.any( stock_change[0:2,0:5]>0)
True

3.三元运算符

  np.where(布尔值,True的位置的值,False的位置的值)

temp = stock_change[:4,:4]
#判断数组中的值是否大于0,是置于1,否置为0
np.where(temp>0,1,0)

array([[0, 1, 0, 1],
       [0, 1, 1, 0],
       [1, 1, 0, 1],
       [1, 1, 0, 0]])

复合逻辑运算

​  np.logical_and( ) 与运算

​  np.logical_or( ) 或运算

#挑选大于0.5并且小于1的数
np.logical_and(temp>0.5,temp<1)
array([[False, False, False, False],
       [False, False, False, False],
       [False, False, False, False],
       [False, False, False, False]])
#挑选大于0.5或小于1的数
np.logical_or(temp>0.5,temp<1)
array([[ True,  True,  True,  True],
       [ True,  True,  True,  True],
       [ True,  True,  True,  True],
       [ True,  True,  True,  True]])

二、统计运算

1.统计指标函数

  常见函数min、max、mean(平均值)、median(中位数)、var(方差)、std(标准差)
#调用方法
#1.temp.max(1)
#2.np.max(temp,0)
#1表示按行,0表示按列
temp
array([[-0.64249698,  0.20527198, -0.25116011,  0.21976393],
       [-1.03996567,  1.1       ,  0.37277963, -0.57377565],
       [ 0.29487292,  1.1       , -1.39841772,  1.1       ],
       [ 1.1       ,  1.1       , -1.18514356, -0.11440521]])
#按列寻找最大值
temp.max(0)
array([1.1       , 1.1       , 0.37277963, 1.1       ])
#按行寻找最大值
temp.max(1)
array([0.21976393, 1.1       , 1.1       , 1.1       ])

2.返回最大值、最小值所在位置

#np.argmax(temp, axis=)  按行:1,按列:0

#np.argmin(temp, axis=)
np.argmax(temp,1)
array([3, 1, 1, 0], dtype=int64)

np.argmin(temp,0)
array([1, 0, 2, 1], dtype=int64)

三、数组间运算

1.数组与数的运算

​   相当于数组每个数都进行相同的运算

arr1 = np.array([[1,2,3,2,1,4],[5,6,1,2,3,1]])
arr1 + 10
array([[11, 12, 13, 12, 11, 14],
       [15, 16, 11, 12, 13, 11]])

2.数组与数组运算

广播机制

​   方便不同形状的ndarray进行运算

 可以运算的情况:

  1.维度相等

  2.shape 其中对应一个地方为1

3.矩阵运算

3.1矩阵存储方法

1.ndarrary二维数组

data = np.array([[80,86],[82,80]])
array([[80, 86],
       [82, 80]])

2.matrix数据结构

np.mat([[80,86],[82,80]])
matrix([[80, 86],
        [82, 80]])

3.2矩阵乘法运算

要求:

    形状:(m , n) * (n , l)

运算规则:1.ndarray存储

                    np.matmul(arr1,arr2)

                    np.dot(arr1,arr2)

​                  2.matrix存储

​                     arr1 * arr2

​ 注:ndarray存储相乘需要满足广播机制

weights_mat
matrix([[0.3],
        [0.7]])
data = np.array([[80,86],
    			[82,80],
    			[85,78],
   				[90,90],
    			[86,82],
    			[82,90],
    			[78,80],
    			[92,94]])
data * weights_mat
matrix([[84.2],
        [80.6],
        [80.1],
        [90. ],
        [83.2],
        [87.6],
        [79.4],
        [93.4]])
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值