Last updated on 2017-11-26…
基本
import numpy as np
生成
x = np.empty([3,2], dtype = int) # [[0, 0],[0, 0],[0, 0]]
x = np.zeros((5,), dtype = np.int) # [0 0 0 0 0]
x = np.ones(5) # [1. 1. 1. 1. 1.]
a = np.array([[1,2,3],[3,4,5],[4,5,6]])
print (a[...,1]) # 第2列元素
print ("-----------")
print (a[1,...]) # 第2行元素
print ("-----------")
print (a[...,1:]) # 第2列及剩下的所有元素
[2 4 5]
-----------
[3 4 5]
-----------
[[2 3]
[4 5]
[5 6]]
转化
x = [1,2,3]
a = np.asarray(x) # [1 2 3]
范围
a = np.arange(10)
print (a) # [0 1 2 3 4 5 6 7 8 9]
print (a[2:]) # [2 3 4 5 6 7 8 9]
print (a[2:5]) #不包括末尾5 # [2 3 4]
a = np.arange(10,20,2) # [10, 12, 14, 16, 18]
a = np.arange(6).reshape(2,3)
[[0, 1, 2],
[3, 4, 5]]
遍历
a = np.arange(6).reshape(2,3)
for x in np.nditer(a):
print (x, end=", " ) # 0, 1, 2, 3, 4, 5,
for x in np.nditer(a.T):
print (x, end=", " ) # 0, 1, 2, 3, 4, 5,
for x in np.nditer(a.T.copy(order='C')):
print (x, end=", " ) # 0, 3, 1, 4, 2, 5,
从上述例子可以看出,a 和 a.T 的遍历顺序是一样的,也就是他们在内存中的存储顺序也是一样的 但是 a.T.copy(order = ‘C’) 的遍历结果是不同的,那是因为它和前两种的存储方式是不一样的,默认是按行访问
- for x in np.nditer(a, order=’F’):Fortran order,即是列序优先;
- for x in np.nditer(a.T, order=’C’):C order,即是行序优先;
运算
四舍五入与取整
import numpy as np
a = np.array([1.0, 5.55, 123, 0.567, 25.532])
print (np.around(a)) #到整数部分 0.56->1.
print (np.around(a, decimals = 1)) #到最后一位 5.55->5.6
np.ceil(a) #向上取整 -1.7 -> -1
np.floor(a) #向下取整 -1.7 -> -2
算术运算
np.add(a,b) #a+b
np.subtract(a,b) #a-b
np.multiply(a,b) #a*b
np.divide(a,b) #a/b
np.mod(a,b) #a%b = np.remainder(a,b)
np.power(a,b) #a^b
np.reciprocal(a) #1/a
三角运算
a = np.array([0,30,45,60,90])
sin = np.sin(a*np.pi/180) # 通过乘 pi/180 转化为弧度
cos = np.cos(a*np.pi/180)
tan = np.tan(a*np.pi/180)
inv = np.arcsin(sin)
inv = np.arccos(cos)
inv = np.arctan(tan)
print (np.degrees(inv)) #转化为角度数
统计运算
np.percentile(a, q) # 百分位数 q: 要计算的百分位数,在 0 ~ 100 之间
np.median(a) # 中位数
np.mean(a) # 平均值
np.var([1,2,3,4])
wts = np.array([4,3,2,1]) #加权平均
np.average(a,weights = wts)
排序
numpy.sort(a, axis, kind, order)
- a: 要排序的数组
- axis: 沿着它排序数组的轴,如果没有数组会被展开,沿着最后的轴排序, axis=0 按列排序,axis=1 按行排序
- kind: 默认为’quicksort’(快速排序),其他有’mergesort’(归并排序)、’heapsort’(堆排序)
- order: 如果数组包含字段,则是要排序的字段
a = np.array([[3,7],[9,1]])
[[3 7]
[9 1]]
np.sort(a)
[[3 7]
[1 9]]
np.sort(a, axis = 0)
[[3 1]
[9 7]]
其他:numpy.lexsort() 用于对多个序列进行排序。把它想象成对电子表格进行排序,每一列代表一个序列,排序时优先照顾靠后的列。numpy.argmax() 和 numpy.argmin()函数分别沿给定轴返回最大和最小元素的索引。