前言:本文是学习网易微专业的《python全栈工程师》 中的《数据分析 - 机器学习工程师》专题的课程笔记,欢迎学习交流。
1.数组与标量间的运算:数组里元素的运算
import numpy as np
a = np.arange(0, 10).reshape(2, 5)
a*3
a+3
a-3
a/3
b = a + 10
a.shape, b.shape
a + b
a - b
a / b
运行结果:
3.通过广播机制的运算:数组形状可以不同,但必须有一个轴的元素个数相同
m = np.arange(5)
a + m
n = np.arange(1, 3).reshape(-1, 1)
a + n
a + np.array([1])
1.内置函数:
一元函数:
函数 | 说明 |
---|---|
np.sin,np.cos,np.tan | 三角函数 |
np.arcsin,np.arccos,np.arctan | 反三角函数 |
np.sinh,np.cosh,np.tanh | 双曲三角函数 |
np.arcsinh,np.arccosh,np.arctanh | 反双曲三角函数 |
np.sqrt | 求平方根 |
np.exp | 计算自然指数 |
np.log,np.log2,np.log10 | 计算对数(依次是以e、2、10为底) |
示例:
alpha = np.linspace(-1, 1, 11)
y = np.sin(np.pi * alpha)
np.round(y, decimals=3)
函数 | 说明 |
---|---|
np.add,np.subtract,np.multiply,np.divide | 算数运算函数 |
np.equal,np.not_equal,np.less,np.less_equal,np.greater,np.greater_equal | 比较运算函数 |
np.power | 指数运算 |
np.remainder | 得到余数 |
np.reciprocal | 返回倒数(不要使用整数型) |
np.real,np.imag,np.conj | 复数的实部、虚部和完整的复数 |
np.sign、np.abs | 得到对象符号和绝对值 |
np.floor、np.ceil、np.rint | 效果都是取整 |
np.round | 四舍五入 |
示例一:
np.add(np.power(np.sin(alpa), 2), np.power(np.cos(alpha), 2))
a = np.arange(10.0, 100.0, 2)
b = np.logspace(2, 4, a.shape[0])
m = np.empty_like(a)
np.remainder(b, a, out=m) # 将运算结果,即余数保存到m中
python
里自定义函数是如下这样的:
# 自定义bmi函数
def bmi(height, weight):
bmi_index = weight / height ** 2
if bmi_index > 18 and bmi_index < 25:
return 0
elif bmi_index <= 18:
return -1
else:
return 1
bmi(1.55, 45) # 调用函数
使用numpy
来自定义通过函数是如下这样的:
# 创建身高数组
h = (2.2 - 1.4) * np.random.random_sample((10, )) + 1.4
h = np.round(h, 2)
# 体重的数组
w = (96 - 30) * np.random.random_sample((10, )) + 30
w = np.round(w, 2)
运行结果:
在python
中自定义的函数,不能直接拿来在numpy
中调用,下面的调用会报错:
bmi(h, w)
# 这里的2表示有两个参数,1表示有一个返回值
bmi_ufunc = np.frompyfunc(bmi, 2, 1)
bmi_ufunc(h, w)
bmi_ufunc2 = np.vecotrize(bmi, otypes=[np.float])
bmi_ufunc2(h, w)
运行结果:
注意:在进行数据分析时,最好不要用for
循环语句,因为数据量一般较大,容易内存溢出。