Numpy学习入门(二)
ndarray数组转置
转置常见有两种方式,分别是:
.transpose()
方法.T
属性
主要以二维数组为例,更高维的数组,目前还没有碰到应用的地方,暂时忽略。
>>> a = np.random.randn(3,3)
>>> a
array([[ 0.35475875, -1.10115755, -1.57129844],
[-0.24260662, -0.1518372 , -0.01773038],
[-0.6385935 , -0.8845019 , -1.17398045]])
>>> a.T
array([[ 0.35475875, -0.24260662, -0.6385935 ],
[-1.10115755, -0.1518372 , -0.8845019 ],
[-1.57129844, -0.01773038, -1.17398045]])
>>> a.transpose()
array([[ 0.35475875, -0.24260662, -0.6385935 ],
[-1.10115755, -0.1518372 , -0.8845019 ],
[-1.57129844, -0.01773038, -1.17398045]])
注意:
- 转置得到的是原数组的视图,而不是复制。
>>> b = a.T
>>> b
array([[ 0.35475875, -0.24260662, -0.6385935 ],
[-1.10115755, -0.1518372 , -0.8845019 ],
[-1.57129844, -0.01773038, -1.17398045]])
>>> b[b<0]=0
>>> b
array([[0.35475875, 0. , 0. ],
[0. , 0. , 0. ],
[0. , 0. , 0. ]])
>>> a
array([[0.35475875, 0. , 0. ],
[0. , 0. , 0. ],
[0. , 0. , 0. ]])
Numpy中的通用函数ufunc
Numpy中的ufunc函数指的是执行元素级运算的函数,即对每个元素完成相同的运算。包括一元运算和二元运算,其中二元运算一般要求两个ndarray的shape是一致的。
一元运算ufunc包括:
函数 | 说明 |
---|---|
abs, fabs | 整数、浮点数、复数的绝对值,若不是复数,fabs运算更快 |
sqrt | 平方根 |
square | 平方 |
exp | 以e为底的指数 |
log, log10, log2, long1p | 各个对数 |
sign | 符号函数,1正数,0,-1负数 |
ceil, floor | 上、下取整 |
rint | 四舍五入取整 |
modf | 将小数和整数部分以独立的数组返回 |
isnan, isfinite, isinf | 是否为NaN,是否有穷,是否无穷 |
cos, cosh, sin, sinh, tan, tanh | 三角函数 |
arccos, arccosh, arcsin, arcsinh, arctan, arctanh | 反三角函数 |
logical_not | 逻辑非,相当于~ |
二元运算ufunc包括:
函数 | 说明 |
---|---|
add, substract, multiply, divide | 加、减、乘、除,其实已经重载了+ - * / |
power | 乘方 |
maximum, fmax, minmum, fmin | 最大,最小,其中fmax和fmin将忽略NaN |
floor_divide, mode | 整除和取模 |
copysign | 将第一个的符号复制给第二个数组 |
greater, greater_equal, less, less_equal, equal, not_equal | 比较运算 |
logical_and, logical_or, logical_xor | 逻辑与、或、异或,已重载&、|、^ |