0. np.delete()
属非更易型操作,是为了获取返回值,对原始数据不会进行修改;
from sklearn.datasets import load_iris
import numpy as np
test_idx = [0, 50, 150]
X_train, y_train = np.delete(iris.data, test_idx, axis=0), np.delete(iris.target, test_idx)
X_test, y_test = iris.data[test_idx], iris.target[test_idx]
1. 库下的全局函数
全局函数np.funcation_name()一般属于非更易型函数
既然非更易,就需有返回值,否则函数无意义;
2. np.zeros()
>> np.zeros(())
array(0.0)
# 也即接收空参的 tuple;
np.logaddexp
numpy.logaddexp(x1, x2[, out])
也即计算log(exp(x1)+exp(x2))
如何通过logaddexp函数计算(如果都含有部分指数形式的话),
log(x+y) == np.logaddexp(np.log(x), np.log(y))
# log(exp(np.log(x))+exp(np.log(y))) == log(x+y)
np.meshgrid() 与 np.mgrid
meshgrid is very useful to evaluate functions(自然是一个关于 的二元函数) on a grid.(不妨将这里的grid理解为网格点,np.meshgrid的目的是生成网格点的坐标 x:-10-10, y:-10-10)
xx, yy = np.meshgrid(np.arange(-5, 5, .01), np.arange(-5, 5, .01))
zz = np.sin(xx**2+yy**2)/(xx**2+yy**2)
plt.contourf(xx, yy, zz)
plt.show()
也可以在创建网格点的坐标时,指定参数sparse为True,这样生成的 轴坐标个数就会显著减少,在使用二者的地方,通过numpy默认的广播机制(broadcasting)实现和dense型的坐标等价的功能。
>>> x, y = np.meshgrid(range(5), range(5), sparse=True)
>>> x
array([[0, 1, 2, 3, 4]])
# x.shape = (1, 5)
# 广播时拷贝扩展5行
>>> y
array([[0],
[1],
[2],
[3],
[4]])
# y.shape = (5, 1)
# 广播时拷贝拓展5列
np.mgrid是np.meshgrid()的convenient version,np.mgrid不是函数。
注意切片的用法是:start?step
>>> np.mgird[0:3, 0:3]
# 步长为1
# 不包含3,
array([[[0, 0, 0],
[1, 1, 1],
[2, 2, 2]],
[[0, 1, 2],
[0, 1, 2],
[0, 1, 2]]])
>>> np.mgrid[-1:1:5j]
# 步长为复数时,
# 实数部分为元素的个数
# stop value is inclusive
array([-1. , -0.5, 0. , 0.5, 1. ])
# (1-(-1))/(5-1)=.5
np.clip()
np.clip()的数学本质是一种截断;
考虑如下的分段函数:
plt.plot(x, np.clip(x, -5, 5), 'g', lw=2)
来源:CSDN
作者:Inside_Zhang
链接:https://blog.csdn.net/lanchunhui/article/details/50429205