设为首页 收藏本站
查看: 834|回复: 0

[经验分享] Python 之NumPy

[复制链接]

尚未签到

发表于 2018-8-10 12:29:33 | 显示全部楼层 |阅读模式
>>> a = np.floor(10*np.random.random((3,4)))  
>>> a
  
array([[ 2.,  8.,  0.,  6.], [ 4.,  5.,  1.,  1.],[ 8.,  9.,  3.,  6.]])
  
>>> a.shape
  
(3, 4)
  
>>> a.ravel() #扁平话处理,及只有一个维度
  
array([ 2.,  8.,  0.,  6.,  4.,  5.,  1.,  1.,  8.,  9.,  3.,  6.])
  
>>> a.reshape(6,2) #改变形状为6行2列形式
  
array([[ 2.,  8.],
  
       [ 0.,  6.],
  
       [ 4.,  5.],
  
       [ 1.,  1.],
  
       [ 8.,  9.],
  
       [ 3.,  6.]])
  
>>> a.T #换位,即行变成列,列变成行
  
array([[ 2.,  4.,  8.],
  
       [ 8.,  5.,  9.],
  
       [ 0.,  1.,  3.],
  
       [ 6.,  1.,  6.]])
  
>>> a.T.shape
  
(4, 3)
  
>>> a.shape
  
(3, 4)
  
reshape改变了数组的形状,新生乘了一个数组,但是resize改变个数组的形状,改变的是自身的数据
  
>>> a
  
array([[ 2.,  8.,  0.,  6.],       [ 4.,  5.,  1.,  1.],       [ 8.,  9.,  3.,  6.]])
  
>>> a.resize((2,6))
  
>>> a
  
array([[ 2.,  8.,  0.,  6.,  4.,  5.],       [ 1.,  1.,  8.,  9.,  3.,  6.]])
  
合并数组:横向合并和纵向合并
  
>>> a = np.floor(10*np.random.random((2,2)))
  
>>> a
  
array([[ 8.,  8.],       [ 0.,  0.]])
  
>>> b = np.floor(10*np.random.random((2,2)))
  
>>> b
  
array([[ 1.,  8.],       [ 0.,  4.]])
  
>>> np.vstack((a,b)) #纵向合并
  
array([[ 8.,  8.],       [ 0.,  0.],       [ 1.,  8.],       [ 0.,  4.]])
  
>>> np.hstack((a,b)) #横向合并
  
array([[ 8.,  8.,  1.,  8.],       [ 0.,  0.,  0.,  4.]])
  

  

  

  

  
column_stack合并数组,值合并第一维度
  
>>> from numpy import newaxis
  
>>> np.column_stack((a,b))   # With 2D arrays
  
array([[ 8.,  8.,  1.,  8.],       [ 0.,  0.,  0.,  4.]])
  

  
>>> a = np.array([4.,2.])
  
>>> b = np.array([2.,8.])
  
>>> a[:,newaxis]  # This allows to have a 2D columns vector
  
array([[ 4.],       [ 2.]])
  

  
>>> np.column_stack((a[:,newaxis],b[:,newaxis])) #合并2维数组
  
array([[ 4.,  2.],       [ 2.,  8.]])
  

  
>>> np.vstack((a[:,newaxis],b[:,newaxis]))
  
array([[ 4.],
  
       [ 2.],
  
       [ 2.],
  
       [ 8.]])
  
hsplit水平方向切割数组
  
>>> a = np.floor(10*np.random.random((2,12)))
  
>>> a
  
array([[ 9.,  5.,  6.,  3.,  6.,  8.,  0.,  7.,  9.,  7.,  2.,  7.],
  
       [ 1.,  4.,  9.,  2.,  2.,  1.,  0.,  6.,  2.,  2.,  4.,  0.]])
  
>>> np.hsplit(a,3)   # Split a into 3 切割成3个数组
  
[array([[ 9.,  5.,  6.,  3.],
  
       [ 1.,  4.,  9.,  2.]]),
  
       array([[ 6.,  8.,  0.,  7.],
  
       [ 2.,  1.,  0.,  6.]]),
  
       array([[ 9.,  7.,  2.,  7.],
  
       [ 2.,  2.,  4.,  0.]])]
  
array_split可以自定义切割的水平方向哈市垂直方向
  
>>> x = np.arange(8.0)
  
>>> np.array_split(x, 3) #array_split(ary, indices_or_sections, axis=0)
  
    [array([ 0.,  1.,  2.]), array([ 3.,  4.,  5.]), array([ 6.,  7.])]
  

  
复制
  
简单的赋值,b指向a的对象
  
>>> a = np.arange(12)
  
>>> b = a            # no new object is created
  
>>> b is a           # a and b are two names for the same ndarray object
  
True
  
>>> b.shape = 3,4    # changes the shape of a
  
>>> a.shape
  
(3, 4)
  

  

  
快照模式
  
>>> c = a.view()
  
>>> c is a
  
False
  
>>> c.base is a    # c is a view of the data owned by a
  
True
  
>>> c.flags.owndata
  
False
  
>>> c.shape = 2,6    # a's shape doesn't change
  
>>> a.shape(3, 4)
  
>>> c[0,4] = 1234    # a's data changes
  
>>> a
  
array([[   0,    1,    2,    3],
  
       [1234,    5,    6,    7],
  
        [   8,    9,   10,   11]])
  

  

  
深度拷贝
  
>>> d = a.copy()   # a new array object with new data is created
  
>>> d is a
  
False
  
>>> d.base is a    # d doesn't share anything with a
  
False
  
>>> d[0,0] = 9999
  
>>> a
  
array([[   0,   10,   10,    3],
  
        [1234,   10,   10,    7],
  
        [   8,   10,   10,   11]])

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-549669-1-1.html 上篇帖子: Python封装及解构 下篇帖子: Python之列表
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表