python 做科学的计算

最近在学习用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做科学计算

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值