python-数据分析(8-numpy02)

Numpy

8 Numpy02

8.1 Numpy数组算术

数组之所以重要是因为它允许我们进行批量操作数据并且没有任何for循环。也被称为向量化。

数组与标量的算术操作
数组与标量的算术操作会把计算参数传递给数组的每一个元素。

import numpy as np
arr = np.arange(6).reshape(2,3)
arr+1
--------------------
array([[1, 2, 3],
       [4, 5, 6]])

两个等尺寸数组的算术操作
两个等尺寸数组的算术操作实际上是逐元素操作。

arr1 = np.arange(1,7).reshape(2,3)
arr2 = np.arange(4,10).reshape(2,3)
arr1+arr2   
# arr2/arr1  (都可以执行)
# arr2-arr1  
# arr2*arr1
-------------------------------------
array([[ 5,  7,  9],
       [11, 13, 15]])
8.2 广播机制

广播机制规则:如果两个数组的后缘维度(trailing dimension,即从末尾开始算起的维度)的轴长度相符或其中一方的长度为1,则认为他们是广播兼容的。广播会在缺失和(或)长度为1的维度上进行。
在这里插入图片描述
举例

arr2 = np.arange(6).reshape(2,3)
arr3 = np.arange(2).reshape(2,1)
print(arr2)
print(arr3)
arr2 - arr3
------------------------------
[[0 1 2]
 [3 4 5]]
[[0]
 [1]]
array([[0, 1, 2],
       [2, 3, 4]])

数组拼接

  • np.vstack() 垂直拼接
  • np.hstack() 水平拼接

注意

  • 水平拼接需要对应行数一致,垂直拼接需要对应列数一致。
arr8 =  np.arange(3).reshape(1,3)   ###注意vstack里面的参数是元组
arr9 =  np.arange(9).reshape(3,3)
np.vstack((arr8,arr9))
-------------------------
array([[0, 1, 2],
       [0, 1, 2],
       [3, 4, 5],
       [6, 7, 8]])

arr6 =  np.arange(6).reshape(2,3)
arr7 =  np.arange(8).reshape(2,4)
np.hstack((arr6,arr7))
---------------------------------
array([[0, 1, 2, 0, 1, 2, 3],
       [3, 4, 5, 4, 5, 6, 7]])
8.3 切片

一维索引与切片
同python中的内建数据类型list一致。

注意

  • 索引默认从0开始
  • 切片左闭右开
  • 步长为整数

二维索引与切片

  • 二维数组递归方式获取
  • 二维数组逗号分隔获取(行,列)
  • 取单行 arr[x1,:]
  • 取连续行 arr[x1:x2,:]
  • 取分开行 arr[[x1,x2],:]
  • 取子矩阵 arr[x1:x2,y1:y2]
  • 取点 arr[[x1,x2],[y1,y2]]

举例如下 (懒得编辑…)
在这里插入图片描述
注意
• 当有需要修改数组当中的值时,我们可以直接取值进行赋值。
• 当数组与标量进行比较时,数组当中每个元素与标量进行比较,返回bool值。 与此同时,该比较也可以作为索引,被称为布尔索引。比如arr[arr>20]

举例如下:

#取值   赋值
arr = np.arange(16).reshape(4,4)    
arr[1:3,1:3] = 0
arr
--------------------
array([[ 0,  1,  2,  3],
       [ 4,  0,  0,  7],
       [ 8,  0,  0, 11],
       [12, 13, 14, 15]])

arr1 = np.arange(16).reshape(4
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值