Numpy之ndarray数组运算

ndarray数组运算


数组函数运算

import numpy as np

数组和数值做运算

a = np.array([[1, 2, 3], [4, 5, 6]])
a
array([[1, 2, 3],
       [4, 5, 6]])
a + 10
a - 10
a * 10
a / 10
array([[0.1, 0.2, 0.3],
       [0.4, 0.5, 0.6]])
a // 5  # 取整
a % 5  # 取余
array([[1, 2, 3],
       [4, 0, 1]], dtype=int32)
a ** 2  # 平方
a ** 3  # 三次方

a ** 1/2  # 根号2
a ** 1/3  # 根号3
array([[0.33333333, 0.66666667, 1.        ],
       [1.33333333, 1.66666667, 2.        ]])

数组间运算

数组间运算会自动对应相应位置的值计算

a1 = np.array([[1, 2, 3], [4, 5, 6]])
a2 = np.array([1,2,3])
a1
array([[1, 2, 3],
       [4, 5, 6]])
a2
array([1, 2, 3])
a1 + a2
array([[2, 4, 6],
       [5, 7, 9]])

并不是所有数据形状都可以广播,无法广播计算会出错

a2
array([1, 2, 3])
b2 = np.array([1, 2])
b2
array([1, 2])
# a2 + b2  # 报错

数组函数运算

  • 函数 描述
  • abs 绝对值
  • sqrt 平方根,等价于 arr ** 0.5
  • square 平方,等价于 arr ** 2
  • logical_not 计算各元素not x的真值,True变False,False变True
  • sign 计算每个元素的符号:,1(正数),0(零),-1(负数)
  • modf 分别返回小数数和整数部分的数组
  • log, log10, log2, log1p 自然对数(底数为e),底数为10的对数,底数为2的对数和 log(1 + x)
  • exp 以e为底的指数函数 ex,2.71828 ** x
  • cos, cosh, sin sinh, tan, tanh 三角函数,普通型和双曲型
  • arccos, arccosh, arcsin, arcsinh, arctan, arctanh 反三角函数
c = np.array([1,2,-3,-4])
c
array([ 1,  2, -3, -4])

绝对值

np.abs(c)
array([1, 2, 3, 4])

平方

d = np.square(c)
d
array([ 1,  4,  9, 16], dtype=int32)

平方根

np.sqrt(d)
array([1., 2., 3., 4.])

计算各元素not x的真值,True变False,False变True

c
array([ 1,  2, -3, -4])
c >= 0
~(c >= 0)
np.logical_not(c > 0)  # not x的非运算,等价于上面
array([False, False,  True,  True])
# 布尔查询

c[c > 0]
c[~(c > 0)]
c[np.logical_not(c > 0)]
array([-3, -4])

计算每个元素的符号:,1(正数),0(零),-1(负数)

c
array([ 1,  2, -3, -4])
np.sign(c)
array([ 1,  1, -1, -1])

分别返回小数数和整数部分的数组

c2 = np.array([1.2, 3.4, 5.67, 6])
c2
array([1.2 , 3.4 , 5.67, 6.  ])
np.modf(c2)
(array([0.2 , 0.4 , 0.67, 0.  ]), array([1., 3., 5., 6.]))

log, log10, log2, log1p 自然对数(底数为e),底数为10的对数,底数为2的对数和 log(1 + x)

对数是指数的逆运算

  • 105 = 100000
  • log10(100000) = 5

求10的5次方

10 ** 5
100000

求以10为底,100000的对数

np.log10(100000)
5.0

  • 热力学熵
  • 信息熵

熵:熵反映了一个事物的混乱程度
* 熵越大:事物越混乱,不能预测,意外
* 熵越小:事物有规律


例子:世界杯,32支球队,猜到冠军是谁,最少猜几次

例子:“美女”名词的信息量是多少?

  • 50年前,100个人里,1个人叫你美女
  • 现在,100个人,50个人叫你美女

美女这个词的信息量变化如何?

‘世界杯法国队夺冠’这句话的信息含量是多少?

# 对足球外行说这句话

# 世界杯法国队

-np.log2(1/32)  # 5比特
# 外行猜冠军,没有预备知识,认为所有球队夺冠概率相同
5.0
# 对球迷说这句话
# 球迷知道球队夺冠概率并不相同

-np.log2(1/8)
3.0
# 另外一种情况,巴西队访问中国,中国各省各出一支球队,比赛,结果:法国队赢了
# 告诉球迷

-np.log2(32/32)  # 信息量最小
-np.log2(1/32)  # 信息量最大
5.0

美女 信息量的变化

-np.log2(1/100)
6.643856189774724
-np.log2(50/100)
1.0

你可能感兴趣的:(Numpy之ndarray数组运算)