最近在学习用python进行数据处理,因此收集了一波资料,在这里分享:
numpy的使用:
>>> import numpy as np
>>> a=np.arange(10)
>>> a
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> a[:5]
array([0, 1, 2, 3, 4])
>>> a[0]
0
>>> a[:-1]
array([0, 1, 2, 3, 4, 5, 6, 7, 8])
>>> a
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> a[1:-1:2]
array([1, 3, 5, 7])
>>> a[::-1]
array([9, 8, 7, 6, 5, 4, 3, 2, 1, 0])
>>> a[5:1:-2]
array([5, 3])
>>>
>>> x=np.arange(10,1,-1)
>>> x
array([10, 9, 8, 7, 6, 5, 4, 3, 2])
>>> x[[3,3,1,8]]
array([7, 7, 9, 2])
>>> b=x[np.array[3,3,-3,8]]
Traceback (most recent call last):
File "<pyshell#18>", line 1, in <module>
b=x[np.array[3,3,-3,8]]
TypeError: 'builtin_function_or_method' object is not subscriptable
>>> b=x[np.array([3,3,-3,8])] #倒序则是-1,-2,-3
>>> b
array([7, 7, 4, 2])
>>> x
array([10, 9, 8, 7, 6, 5, 4, 3, 2]
布尔:
>>> x = np.arange(5,0,-1)
>>> x
array([5, 4, 3, 2, 1])
>>> x[np.array([True, False, True, False, False])]
>>> # 布尔数组中下标为0,2的元素为True,因此获取x中下标为0,2的元素
array([5, 3])
>>> x[[True, False, True, False, False]]
>>> # 如果是布尔列表,则把True当作1, False当作0,按照整数序列方式获取x中的元素
array([5,3])
>>> x[np.array([True, False, True, True])]
>>> # 布尔数组的长度不够时,不够的部分都当作False
array([5, 3, 2])
>>> x[np.array([True, False, True, True])] = -1, -2, -3
>>> # 布尔数组下标也可以用来修改元素
>>> x
array([-1, 4, -2, -3, 1])
如何构成矩阵数组:
>>> x=np.arange(0,60,10)
>>> x
array([ 0, 10, 20, 30, 40, 50])
>>> x=np.arange(0,60,10).reshape(-1,1) #reshape类似于转置
>>> x
array([[ 0],
[10],
[20],
[30],
[40],
[50]])
>>> x=np.arange(0,6)
>>> x
array([0, 1, 2, 3, 4, 5])
>>> x=np.arange(0, 60, 10).reshape(-1, 1) + np.arange(0, 6)
>>> x
array([[ 0, 1, 2, 3, 4, 5],
[10, 11, 12, 13, 14, 15],
[20, 21, 22, 23, 24, 25],
[30, 31, 32, 33, 34, 35],
[40, 41, 42, 43, 44, 45],
[50, 51, 52, 53, 54, 55]])
结构数组:
>>> import numpy as np
js
>>> persontype = np.dtype({
'names':['name', 'age', 'weight'],
'formats':['S32','i', 'f']})
>>> a = np.array([("Zhang",32,75.5),("Wang",24,65.2)],
dtype=persontype)
>>> a
array([(b'Zhang', 32, 75.5), (b'Wang', 24, 65.2)],
dtype=[('name', 'S32'), ('age', '<i4'), ('weight', '<f4')])
>>>
stride 步长:
c = np.array([[0,1,2],[3,4,5],[6,7,8]], dtype=np.float32, order="F")
>>> c.strides
(4, 12) #横轴 每增加一个数字增加4个字节,每增加一个纵坐标增加12个字节
基本的数学运算:
>>> a= np.arange(0,4)
>>> a
array([0, 1, 2, 3])
>>> b= np.arange(1,5)
>>> b
array([1, 2, 3, 4])
>>> np.add(a,b)
array([1, 3, 5, 7])
>>> np.add(a,b,a) # 数值是a+b的和,然后按最后一个数组的形式存储
array([1, 3, 5, 7])
>>> a
array([1, 3, 5, 7])
基本的数学运算表述:
y = x1 + x2: | add(x1, x2 [, y]) |
y = x1 - x2: | subtract(x1, x2 [, y]) |
y = x1 * x2: | multiply (x1, x2 [, y]) |
y = x1 / x2: | divide (x1, x2 [, y]), 如果两个数组的元素为整数,那么用整数除法 |
y = x1 / x2: | true divide (x1, x2 [, y]), 总是返回精确的商 |
y = x1 // x2: | floor divide (x1, x2 [, y]), 总是对返回值取整 |
y = -x: | negative(x [,y]) |
y = x1**x2: | power(x1, x2 [, y]) |
y = x1 % x2: | remainder(x1, x2 [, y]), mod(x1, x2, [, y]) |
链接:用Python做科学计算