numpy的数组运算,切片以及布尔类型索引以及花式和转置

数组运算

import numpy as np
# 创建两个数组
data_0 = np.array([[1,2,3],[4,5,6]])
data_1 = np.array([[5,6,7],[7,8,9]])
# 将两个数组进行相加
data_0 + data_1

输出结果为:

array([[ 6,  8, 10],
       [11, 13, 15]])

数组相减,乘,除 与数组相加差不多,都是对应元素进行相加,乘,除。


数组与数的计算

# 前面已经加载了numpy这个包,这里就不继续加载了
data_0 = np.array([[1,2,3],[4,5,6]])
# 数组与数相加
6 + data_0
​
​
#-------------------------下面是输出结果---------------------------
array([[ 7,  8,  9],
       [10, 11, 12]])

下面为数组与数的减法运算:

print(6 - data_0)
print(data_0 - 6)
​
​
# -------------------------下面是输出结果--------------------------
[[5 4 3]
 [2 1 0]]
--------------
[[-5 -4 -3]
 [-2 -1  0]]

数组与数的乘法运算和数组与数的加法运算是一样的

数组与数的减法运算和数组与数的除法运算是一样的


数组的切片和索引

一维数组的切片和索引

arr = np.arange(9)
print(arr)
# 下面为数组的索引方式:
#  索引下标为6的元素
print(arr[6])
# 索引下标从3到6的元素,此为左闭右开区间
print(arr[3:6])
# 以步长为3索引下标从1到8的元素,此区间为左闭右开
print(arr[1:8:3])
​
​
# -------------------------下面是输出结果---------------------------
array([0, 1, 2, 3, 4, 5, 6, 7, 8])
-----------------------------------
6
-----------------------------------
array([3, 4, 5])
-----------------------------------
array([1, 4, 7])

多维数组的切片和索引(可以想象成成矩阵)

arrs = np.array([[1,2,3],[4,5,6],[7,8,9]])
print(arrs)
# 打印数组下标为1的元素(小数组)
print(arrs[1])
# 打印横坐标为2,纵坐标为2的元素
print(arrs[2,2])
# 打印第二列的元素
print(arrs[:,2])
# 打印第0行和第1行的元素
print(arrs[:2])
# 打印第0行和第1行 与 第0列和第1列元素 相交 的元素
print(arrs[0:2,0:2])
# 打印第一行里面元素的纵坐标为0和1的元素
print(arrs[1,:2])
​
​
# ----------------------------下面是输出结果-----------------------------
array([[1, 2, 3],
       [4, 5, 6],
       [7, 8, 9]])
----------------------
array([4, 5, 6])
----------------------
9
----------------------
array([3, 6, 9])
----------------------
array([[1, 2, 3],
       [4, 5, 6]])
----------------------
array([[1, 2],
       [4, 5]])
----------------------
array([4, 5])

[2: :2] 从下标为2到最后,步长为2


花式数组

# 先创建一个空数组,并给这个数组分配好了空间
arrss = np.empty((4,4))
# 进行for循环
for i in range(4):
    # 利用循环给数组增添元素,这里arange也是左闭右开区间
    arrss[i] = np.arange(i,i+4)   # arange返回的是数组
arrss
# 打印第一行和第三行的元素
print(arrss[[1,3]])
# 打印横坐标为1,纵坐标为3的元素 和 横坐标为3,纵坐标为3的元素
print(arrss[[1,3],[3,3]])
​
​
# --------------------------下面是输出结果-------------------------
array([[0., 1., 2., 3.],
       [1., 2., 3., 4.],
       [2., 3., 4., 5.],
       [3., 4., 5., 6.]])
----------------------------
array([[1., 2., 3., 4.],
       [3., 4., 5., 6.]])
----------------------------
array([4., 6.])

布尔型索引的使用

name = np.array(['Jack','Tom','Lily','Rose'])
print(name)
numbers = np.array([[1,2,3,4],[3,4,5,6],[5,6,7,8],[7,8,9,10]])
print(numbers)
# 判断是否为Jack,其输出结果为布尔值
print(name=='Jack')z
# 相当于number[ True, False, False, False],即输出那个为True的值
print(numbers[name=='Jack'])
# 在为True的那一行找纵坐标为1的值
print(numbers[name=='Jack',:1])
​
​
# ----------------------------下面是输出结果---------------------------
array(['Jack', 'Tom', 'Lily', 'Rose'], dtype='<U4')
-----------------------------------------------------
array([[ 1,  2,  3,  4],
       [ 3,  4,  5,  6],
       [ 5,  6,  7,  8],
       [ 7,  8,  9, 10]])
-----------------------------------------------------
array([ True, False, False, False])
-----------------------------------------------------
array([[1, 2, 3, 4]])
-----------------------------------------------------
array([[1]])
这种情况 也可以和正太分布相结合

数组的转置

arr_0 = np.arange(16).reshape(4,4)
arr_0
# 数组的转置
arr_0.T。
# 里面可以加参数 arr_0.transpose(1,2,0) 默认是arr_0.transpose(0,1,2),即表示轴的交换。没加参数默认为数组转置。
# arr_0.transpose()   
# # 0轴和1轴进行交换
arr_0.swapaxes(1,0)     

常见一元通用函数

函数描述
sqrt计算平方根 np.sqrt(数组名)
square计算各元素平方 np.square(数组名)
abs,fabs计算整数,浮点数或者复数的绝对值 np.abs(数组名)
ceil向上取整 np.ceil()
floor向下取整 np.floor
rint四舍五入到最接近的整数 np.rint( )
isnan返回 “哪些元素是空” 的布尔类型数组 np.isnan()
isfinite,isinf返回哪些是有穷,哪些是无穷的布尔类型数组
arcos,arccosh,arcsin三角函数
add将数组中对应元素相加 np.add(数组1,数组2)
subtract数组相减 np.subtract(数组1,数组2)
maximum最大值计算
minimum最小值计算
mod求模运算
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值