numpy之数组运算

数组内部元素运算

数组之逻辑运算

可以直接对数组进行逻辑判断,会返回相应的bool类型数组

t1 = np.random.randint(40, 100, (10, 5))
print(t1)
print(t1 > 60)
t1[t1 > 60] = 1
print(t1)

numpy之数组运算_第1张图片

通用判断函数

  • np.all()

  • #判断数组中的元素是否全大于60
    print(np.all(t1 > 60))
    

    在这里插入图片描述

  • np.any()

  • #判断数组中的元素是否有大于60的
    print(np.any(t1 > 60))
    

    在这里插入图片描述

三元运算符

  • np.where()

  • t1 = np.random.randint(40, 100, (10, 5))
    print(t1)
    # 数组元素大于60的置为1,不大于60的元素置为0
    print(np.where(t1 > 60, 1, 0))
    

    numpy之数组运算_第2张图片

  • 复合逻辑需要结合np.logical_and和np.logical_or使用

  • t1 = np.random.randint(40, 100, (10, 5))
    print(t1)
    # 数组中满足大于60且小于90的元素置为1,不满足的元素置为0
    print(np.where(np.logical_and(t1 > 60, t1 < 90), 1, 0))
    # 数组中满足大于60或小于90的元素置为1,不满足的元素置为0
    print(np.where(np.logical_or(t1 > 60, t1 < 90), 1, 0))
    

数组之统计运算

  • np.min(a,axis)—取最小
  • np.max(a,axis)—取最大
  • np.median(a,axis,dtype)—取中位数
  • np.mean(a,axis,dtype)—取平均值
  • np.std(a,axis,dtype)—取标准差
  • np.var(a,axis,dtype)—方差

数组之间的运算

数组与数之间的运算

会作用到数组中的每一个元素上。

t1 = np.array([[1, 2, 3], [3, 4, 5]])
print(t1)
print(t1+3)
print(t1/2)
print(t1*3)

numpy之数组运算_第3张图片

数组与数组之间的运算

广播机制

数组在进行矢量化运算时,要求数组的形状是相等的。当形状不相等的数组执行算术运算的时候,就会出现广播机制,该机制会对数组进行扩展,使数组的shape属性值相同,这样,就可以进行矢量化运算了。

arr1 = np.array([[0], [1], [2], [3]])
print(arr1.shape)
arr2 = np.array([1, 2, 3])
print(arr2.shape)
print(arr1 + arr2)

numpy之数组运算_第4张图片

上述代码中,数组arr1是4行1列,arr2是1行3列。这两个数组要进行相加,按照广播机制会对数组arr1和arr2都进行扩展,使数组arr1和arr2都变成4行3列。

numpy之数组运算_第5张图片

广播机制实现了两个或两个以上的运算,即使这些数组的shape不是完全相同的,只需要满足如下任意一个条件即可。

  • 数组的某一个维度等长。
  • 其中一个数组的某一个维度为1.

广播机制需要扩展维度小的数组,使得它与维度最大的数组的shape值相同,以便使用元素级函数或者运算符进行运算。

你可能感兴趣的:(数据分析,python,numpy)