numpy之数组运算以及统计函数简单介绍

numpy之数组运算以及统计函数简单介绍

四则运算

import numpy as np
a = np.array([1, 2, 3])
a
#array([1, 2, 3])
a * 3
#array([3, 6, 9])
#数组中的每个元素进行对应的四则运算。

b = a + 10
b
#array([11, 12, 13])
a+b
#array([12, 14, 16])
#数组的四则运算则是对应位置的元素进行四则运算

a = np.arange(10).reshape((2, 5))
a
#array([[0, 1, 2, 3, 4],
   [5, 6, 7, 8, 9]])	
m = np.arange(5)
m
#array([0, 1, 2, 3, 4])
a + m
#array([[ 0,  2,  4,  6,  8],
   [ 5,  7,  9, 11, 13]])
n = np.arange(1, 3).reshape((-1, 1))
n
#array([[1],
   [2]])
a + n
#array([[ 1,  2,  3,  4,  5],
   [ 7,  8,  9, 10, 11]])
#如果进行四则运算的数组的0轴或1轴的元素不等,该数组的元素是会扩充的
#a+m,是a在0轴上的元素每一个都和一维数组m相加。
#a+n,是啊在0轴上的元素和n0轴上的元素对应位置相加,然后补足n的1轴上的元素,是现有元素复制补足。

比较运算

np.array([6, 3, 4]) > np.array([3, 5, 2])
#array([ True, False,  True])
#也是对应位置元素比较,返回True或False
#因此,元素数量和位置要一致
a = np.array([3, 6, 9])
b = np.array([4, 5, 8])
np.any(a<b)
#True
np.all(a<b)
#False
#使用any和all进行模糊比较

布尔值比较

np.logical_or(np.array([False, True]), np.array([True, False]))
#array([ True,  True])
#布尔比较的且和或需要使用 logical_and和logical_or,也是相应位置进行比较,返回的也是布尔值

参数是数组的函数使用

def bmi(h, w):
bmi_index = w / h ** 2
if bmi_index > 18 and bmi_index < 25:
    return 0
elif bmi_index <= 18:
    return -1
else:
    return 1

bmi(1.55, 45)
#0

h = (2.2 - 1.4)* np.random.random_sample((10,)) + 1.4
h = np.round(h, 2)
h
#array([2.02, 1.57, 1.72, 1.43, 1.61, 2.  , 2.1 , 1.82, 2.07, 1.72])
#np.random.random_sample((2,3))   # 生成[0,1)随机数,形状 = (2行,3列)
w = (96 - 30) * np.random.random_sample((10,)) + 30
w = np.round(w, 2)
w
#array([73.38, 53.7 , 95.96, 62.55, 50.14, 64.9 , 51.84, 75.49, 39.86,
   66.83])
#np.round(w, 2)   # w保留2位小数

bmi(h, w)
#报错
bmi_ufunc = np.frompyfunc(bmi, 2, 1)
bmi_ufunc(h, w)
#array([-1, 0, 1, 1, 0, -1, -1, 0, -1, 0], dtype=object)
#bmi_ufunc = np.frompyfunc(bmi, 2, 1)  #第一个参数是函数名,第二个参数是函数的参数个数,第三个参数是函数返回值得个数。

正太分布函数介绍:
np.random.normal()正态分布

numpy.random.normal(loc=0.0, scale=1.0, size=None)  
#参数的意义为:
#(loc:float
概率分布的均值,对应着整个分布的中心center
scale:float
概率分布的标准差,对应于分布的宽度,scale越大越矮胖,scale越小,越瘦高
size:int or tuple of ints
输出的shape,默认为None,只输出一个值
我们更经常会用到np.random.randn(size)所谓标准正太分布(μ=0, σ=1),
对应于np.random.normal(loc=0, scale=1, size)

多项式函数介绍:
np.poly1d()

参数1:系数向量
a = np.array([1, -2, 1])
p = np.poly1d(a)
p
#poly1d([ 1, -2,  1])
#poly1d里的是多项式系数,x^2-2x+1
# f(x) = (x-1)^2 + 3(x-1) + 1
g = np.poly1d([1, 3, 1])
f = lambda x: g(x-1)
#1、lambda 后面直接跟变量,变量后面是冒号,冒号后面是表达式,表达式的计算结果就是本函数的返回值。
#2、lambda 函数不能包含命令且包含的表达式不能超过一个.

参数2:布尔值
把数组中的值作为根,然后反推多项式
q = np.poly1d([2,3,5],True)
print(q)
#(x - 2)*(x - 3)*(x - 5)  = x^3 - 10x^2 + 31x -30

参数3:字母
改变未知数代表字母
a = np.array([1, -2, 1])
p = np.poly1d(a, variable='m')
print(p)
#1 m - 2 m + 1

#p(0.5)表示当x = 0.5时,多项式的值为多少
#p([1,2,3])表示当x = 1、2、3时,多项式的值分别为多少
#p.r表示当多项式为 0 时,此等式的根
#p.c表示生成多项式的系数数组
#p.order表示返回最高项的次方数
#p[1]表示返回第一项的系数
#p.deriv([m])表示求导,参数m表示求几次导数
#p.integ([m,k])表示积分,参数m表示积几次分,k表示积分后的常数项的值
#多项式在某点上的值:np.polyval(p,n),返回p多项式在横轴点n上的值
#两个多项式做差运算: np.polysub(a,b)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值