NumPy中数组的运算 + 数组的索引

数组的运算

数组+标量(实数)

  • 数组中的每个位置都加上这个标量
arr2 = np.array([[3,4,5],[6,7,8]])
print(arr2 + 2)

输出:
[[ 5  6  7]
 [ 8  9 10]]


数组+数组

  • 对应位置的值,做对应的运算
    • 加法:对应位置相加
    • 减法:对应位置相减
    • 乘法:对应位置相乘
    • 除法:对应位置相除

代码:(以加法为例)

arr1 = np.array([[1,2,3],[4,5,6]])
arr2 = np.array([[3,4,5],[6,7,8]])
print(arr1+arr2)

输出:
[[ 4  6  8]
 [10 12 14]]

数组转化矩阵,对矩阵做乘法 - mat

注意:

  • 数组的乘法需要同行同列,但是矩阵需要前面一个的列等于后面一个的行才可以使用乘法
arr1 = np.array([[1,2],[4,5]])
arr2 = np.array([[3,4],[6,7]])
arr3 = np.mat(arr1)
arr4 = np.mat(arr2)
print(arr1*arr2)
print(arr3*arr4)

输出:
[[ 3  8]
[24 35]]

[[15 18]
[42 51]]

数组维度展开 - 广播性

  • 扩展可以理解为复制
    • np.array([1,2]) == np.array([[1,2],[1,2]])
arr1 = np.array([1,2])
arr2 = np.array([[3,4],[6,7]])
print(arr1+arr2)

输出:
[[4 6]
[7 9]]

数组的索引

  • 从0开始索引
  • axis = 0 - - 行
  • axis = 1 - -列
  • axis = 2 - -个数(三维的)

一维数组的索引

  • 规律:包前不包后
    arr[:3] == arr[0:3]
    arr[4:] == arr[4:10]
arr1 = np.arange(10)
print(arr1[5]) # 下标为5(第六位)
print(arr1[:3]) # 下标为0-2,输出
print(arr1[3:6]) #下标为3-5,输出

输出:
5
[0 1 2]
[3 4 5]

二维数组索引

逗号,分隔行维度和列维度

arr = np.array([[1,2,3],[2,3,4],[3,4,7]])
print(arr[1]) # 第二行
print(arr[2,1]) #第三行第二列
print(arr[:,1]) #全部行第二列

输出:
[2 3 4]
4
[2 3 4]

布尔索引

  • arr[arr<5]=0 # 当在arr中,有值比5小,就把它复制给0
arr = np.array([[1,2,3],[2,3,4],[3,4,7]])
arr[arr<5]=0 # 当在arr中,有值比5小,就把它复制给0
print(arr)

输出:
[[0 0 0]
 [0 0 0]
 [0 0 7]]

三元运算符

  • np.where(arr>5,10,3)如果arr里面的值大于5,就改成10,小于5,就改成3
arr = np.array([[1,2,3],[2,3,4],[3,4,7]])
print(np.where(arr>5,10,3))
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Bessie_Lee_gogogo

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值