• 初学Numpy(二)


    数组和标量之间的运算

    数组很重要,因为他使你不用编写循环就可以对数据执行批量的运算,这通常叫做矢量化。

    (1)大小相等的数组之间的任何算术运算都会将运算应用到元素级;

    (2)带下不等的数组之间的运算叫做广播。

     1 import numpy as np
     2 from pprint import pprint
     3 arr1 = np.array([[x+1,x+2,x+3]for x in range(2)])
     4 print "arr1:",
     5 pprint(arr1)
     6 
     7 print("arr1*arr1:")
     8 pprint(arr1*arr1)
     9 
    10 print("arr1-arr1:")
    11 pprint(arr1-arr1)
    12 
    13 print("1/arr1:")
    14 pprint(1/arr1)
    15 
    16 print("arr1**0.5:")
    17 pprint(arr1**0.5)

    运行结果:

    arr1:array([[1, 2, 3],
           [2, 3, 4]])
    arr1*arr1:
    array([[ 1,  4,  9],
           [ 4,  9, 16]])
    arr1-arr1:
    array([[0, 0, 0],
           [0, 0, 0]])
    1/arr1:
    array([[1, 0, 0],
           [0, 0, 0]])
    arr1**0.5:
    array([[ 1.        ,  1.41421356,  1.73205081],
           [ 1.41421356,  1.73205081,  2.        ]])

    基本的索引和切片

    由于Numpy的设计目的是处理大数据,所以Numpy的对数组的修改都会直接反映到源数组上,如赋值操作。

     1 #二维数组
     2 '''
     3 在一个二维数组中,各索引位置上的元素不再是标量而是一维数组
     4 '''
     5 arr_2d = np.array([[x,x+1,x+2]for x in range(3)])
     6 pprint(arr_2d)
     7 
     8 #一次传入多个切片
     9 pprint(arr_2d[:2,1:])
    10 pprint(arr_2d[:,:1])#只有冒号表示选取整个轴
    11 
    12 #通过将整数和切片混合,可以得到低维度的切片
    13 pprint(arr_2d[2][1:])
    14 
    15 #切片赋值操作,会扩散到整个选区
    16 arr_2d[:,:1] = 0
    17 pprint(arr_2d)

    运行结果:

     1 array([[0, 1, 2],
     2        [1, 2, 3],
     3        [2, 3, 4]])
     4 array([[1, 2],
     5        [2, 3]])
     6 array([[0],
     7        [1],
     8        [2]])
     9 array([3, 4])
    10 array([[0, 1, 2],
    11        [0, 2, 3],
    12        [0, 3, 4]])
  • 相关阅读:
    TCP
    JAVA面向对象
    windows本地搭建easy-mock环境
    创建axios拦截器
    记录axios高效率并发的方法
    JS:数组中push对象,覆盖问题
    使用el-tree-transfer的方式
    从后台拿到echarts的数据值,求出百分比
    项目遇到的小问题(关于vue-cli中js点击事件不起作用和iconfont图片下载页面css样式乱的解答)
    JavaScript 常用内置对象(字符串属性、Math对象、Array数组对象)
  • 原文地址:https://www.cnblogs.com/zenzen/p/4861069.html
Copyright © 2020-2023  润新知