数组运算
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 | 求模运算 |