一、通用函数:对numpy.array中的数据执行元素级运算的函数
1.求绝对值的函数
# Python里面的abs函数是内置函数,可以求整数,浮点数,复数的绝对值 print abs(2) # 结果仍是整数 print abs(-2.6) print abs(3. + 4j)
2
2.6
5.0
# Python中的fabs函数是math库中的函数,可以求整数,浮点数的绝对值 print math.fabs(-6) # 结果为浮点数 print math.fabs(-6.8)
6.0
6.8
# 因为abs是内置函数,还可以求矩阵元素的绝对值,而math.fabs没有该功能 arr = np.array([[1, -2, 3], [-4, 5, 0]]) print 'arr:' print arr print '------------' print 'abs(arr):' print abs(arr)
arr:
[[ 1 -2 3]
[-4 5 0]]
------------
abs(arr):
[[1 2 3]
[4 5 0]]
# 求矩阵元素的绝对值还可以使用np.abs、np.absolute和np.fabs函数,np.fabs的速度更快 arr = np.array([[1, -2, 3.8], [-4, 5, 9]]) print 'arr:' print arr print '--------------------' print 'np.abs(arr):' print np.abs(arr) print '--------------------' print 'np.absolute(arr):' print np.absolute(arr) print '--------------------' print 'np.fabs(arr):' print np.fabs(arr)
arr:
[[ 1. -2. 3.8]
[-4. 5. 9. ]]
--------------------
np.abs(arr):
[[ 1. 2. 3.8]
[ 4. 5. 9. ]]
--------------------
np.absolute(arr):
[[ 1. 2. 3.8]
[ 4. 5. 9. ]]
--------------------
np.fabs(arr):
[[ 1. 2. 3.8]
[ 4. 5. 9. ]]
2.求平方根的函数
# np.sqrt(arr)求平方根,等价于arr ** 0.5 arr = np.array([[1, 4, 6.25], [16, 25, 36]]) print np.sqrt(arr)
[[ 1. 2. 2.5]
[ 4. 5. 6. ]]
3.求平方的函数
# np.square(arr)求平方,等价于arr ** 2 arr = np.array([[1, 2, 1.5], [0.1, 7, 3]]) print np.square(arr)
[[ 1.00000000e+00 4.00000000e+00 2.25000000e+00]
[ 1.00000000e-02 4.90000000e+01 9.00000000e+00]]
4.获取两个矩阵对应位置上较大的元素
x = np.array([[-1, 3, 5], [0.1, 7, 3]]) y = np.array([[0, 2, -9], [9, -0.2, 100]]) print 'x:' print x print '--------------------------' print 'y:' print y print '--------------------------' print 'maximum:' print np.maximum(x, y)
x:
[[-1. 3. 5. ]
[ 0.1 7. 3. ]]
--------------------------
y:
[[ 0. 2. -9. ]
[ 9. -0.2 100. ]]
--------------------------
maximum:
[[ 0. 3. 5.]
[ 9. 7. 100.]]
5.将矩阵元素的整数部分和小数部分分开
arr = np.random.randn(4) # 标准正态分布 print 'arr:' print arr print '-----------------------------------------------------------------------' print 'modf:' print np.modf(arr)
arr:
[-0.75150837 -2.16133361 -1.09105508 0.19173811]
-----------------------------------------------------------------------
modf:
(array([-0.75150837, -0.16133361, -0.09105508, 0.19173811]), array([-0., -2., -1., 0.]))
6.meshgrid函数:一个m × n的矩阵与一个p × q的矩阵经过meshgrid之后得到两个pq × mn的矩阵
arr1 = np.arange(1, 3) arr2 = np.array([[3, 4, 5], [1, 0, 9]]) print 'arr1:' print arr1 print '----------------------------------------' print 'arr2:' print arr2 print '----------------------------------------' x, y = np.meshgrid(arr1, arr2) print 'x:' print x print '----------------------------------------' print 'y:' print y
arr1:
[1 2]
----------------------------------------
arr2:
[[3 4 5]
[1 0 9]]
----------------------------------------
x:
[[1 2]
[1 2]
[1 2]
[1 2]
[1 2]
[1 2]]
----------------------------------------
y:
[[3 3]
[4 4]
[5 5]
[1 1]
[0 0]
[9 9]]
7.where函数的用法
x_arr = np.array([1, 2, 4, 5]) y_arr = np.array([-1, -2, -4, -5]) z_arr = np.array([True, False, False, True]) result1 = [x if z else y for x, y, z in zip(x_arr, y_arr, z_arr)] print 'result1:' print result1 print '----------------------------' result2 = np.where(z_arr, x_arr, y_arr) print 'result2:' print result2
result1:
[1, -2, -4, 5]
----------------------------
result2:
[ 1 -2 -4 5]
8.sum函数和mean函数
arr = np.array([[2, 4, 6], [1, 3, 5]]) print 'arr:' print arr print '---------------------------------------' print 'np.mean(arr):' print np.mean(arr) # 等于arr.mean() print '---------------------------------------' print 'np.sum(arr):' print np.sum(arr) # 等于arr.sum() print '---------------------------------------' print '按列来计算' print np.mean(arr, axis=0) # axis=0, 表示按列来计算 print '---------------------------------------' print '按行来计算' print np.sum(arr, axis=1) # axis=1, 表示按行来计算 print '---------------------------------------'
arr:
[[2 4 6]
[1 3 5]]
---------------------------------------
np.mean(arr):
3.5
---------------------------------------
np.sum(arr):
21
---------------------------------------
按列来计算
[ 1.5 3.5 5.5]
---------------------------------------
按行来计算
[12 9]
---------------------------------------
9.any函数和all函数
arr = np.array([False, True, False, False]) print 'arr:' print arr print '--------------------------------' print 'arr.any():' print arr.any() # 只要有一个为True,则为True print '--------------------------------' print 'arr.all():' print arr.all() # 只要有一个为False,则为False print '--------------------------------'
arr:
[False True False False]
--------------------------------
arr.any():
True
--------------------------------
arr.all():
False
--------------------------------
10.sort函数
arr = np.random.randn(5) print 'arr:' print arr print '------------------------------------------------------------' print 'arr.sort():' arr.sort() # 排序之后,arr本身变化了 print arr print '------------------------------------------------------------'
arr:
[-0.79041107 1.40614097 -0.81201362 -0.08042629 0.23181889]
------------------------------------------------------------
arr.sort():
[-0.81201362 -0.79041107 -0.08042629 0.23181889 1.40614097]
------------------------------------------------------------
11.unique函数:将矩阵元素唯一化,并返回排序好的结果
arr = np.array(['Bob', 'Jame', 'Will', 'Bob', 'Will']) print 'arr:' print arr print '---------------------------------------' print 'np.unique(arr):' print np.unique(arr) # 将矩阵元素唯一化,并返回排序好的结果 print '---------------------------------------'
arr:
['Bob' 'Jame' 'Will' 'Bob' 'Will']
---------------------------------------
np.unique(arr):
['Bob' 'Jame' 'Will']
---------------------------------------
12.in1d函数:判断一个矩阵中是否包含某些元素
arr = np.array([6, 0, 0, 3, 2, 5, 6]) print 'arr:' print arr print '---------------------------------------' print 'np.in1d():' print np.in1d(arr, [2, 3, 6]) # 判断一个矩阵中是否包含另一个矩阵的元素 print '---------------------------------------'
arr:
[6 0 0 3 2 5 6]
---------------------------------------
np.in1d():
[ True False False True True False True]
---------------------------------------