python-NumPy库的基本用法

 创建数组:

from numpy import *  # 将NumPy库全部导入,不建议这样做,因为容易引起冲突

list1 = [[1, 0, 0, 0],  # 创建一个元素为列表的列表,然后将这个列表转换为数组,就成了二维数组
         [0, 1, 0, 0],
         [0, 0, 1, 0],
         [0, 0, 0, 1]]
arr1 = array(list1)  # 将列表转换为二维数组
print(list1)  # 打印列表,列表为横着,元素之间使用都好隔开
print(arr1)  # 打印数组,数组为四边形



import numpy as np   #一般使用这种方法

list2 = [1, 2, 3, 4, 5]  # 创建列表
arr2 = np.array(list2)  # 转换为一维数组
print(list2)
print(arr2)

python-NumPy库的基本用法_第1张图片

————之后导入都使用第二种方法,不再继续写导入语句————

数组转矩阵:

arr = np.random.rand(4, 4)  # 生成4*4的随机数组,python默认生成随机数是0-1的小数
print(arr)  # 打印数组
randMat = np.mat(arr)  # 将数组转换为矩阵(书上前边标着matrix,但是在PyCharm里矩阵数组显示一样)
print(randMat)  # 打印矩阵
invRandMat = randMat.I  # 求逆矩阵
print(randMat * invRandMat)  # 矩阵和其逆矩阵相乘(得到的应该是单位矩阵,对角线为1,其余为0,但是计算机处理会产生误差)
print(np.eye(4))  # 打印4*4的单位矩阵

python-NumPy库的基本用法_第2张图片

数组运算:

a = np.array([1, 2, 3, 4, 5])
b = np.array([6, 7, 8, 9, 10])
print(a + b, a - b, a * b, a / b)  # NumPy底层有for循环存在,可以对应元素进行运算
print(a ** b)  # 乘方运算
print(np.sin(a))  # 正弦,表示弧度数
print(a.ndim)  # 输出数组a有几个维度
print(a.shape)  # 输出一个元组,表示每个维度有几个元素
print(a.size)  # 输出元素总数

python-NumPy库的基本用法_第3张图片

 数组切片取值:

a = np.arange(25).reshape(5, 5)  # 从0到24的5*5数组
print(a)
print(a[:, 1::2])  # 这个2代表从下标为1开始的列,隔一列取一列
print(a[4:, :])   # 取第四行开始到最后一行,列为所有
print(a[1::2, :-1:2])   # 第一行开始,隔一行取一行,一直到最后一行,列从头开始,隔一列取一列,-1代表最后一列不取
print(a[[0, 1, 2, 3, ], [1, 2, 3, 4]])  # 两个坐标对应取四个元素
print(np.where(a % 3 == 0, a, np.nan))  # 创建一个新数组,使数组a对应位置上所有能被3整除的都替换为nan(第一个参数是一个布尔值,True为第二个参数的值,False为第三个参数的值,其中nan代表一个缺省的值)

python-NumPy库的基本用法_第4张图片

判断数组元素生成布尔数组:

a = np.array([3, -1, 4, 0, 6, -7, -3, 5])
nega = a < 0  # 将符合条件的下标存起来
print(nega)  # 返回一个布尔型数组,存入的下标显示True
print(a[nega])  # 打印筛选出来的元素
print(np.nonzero(nega))  # 返回选中的下标和返回数组中元素的类型
print((a < 0).any())  # a<0返回的布尔数组中,只要有一个为True就返回True
print((a < 0).all())  # a<0返回的布尔数组中,全部为True才返回True
print((a > 3) & (a < 8))
a.sort()  # 排序
print(a)

python-NumPy库的基本用法_第5张图片

索引和切片:

a = np.array([1, 2, 3])   # 一维数组
p1 = a[1]  # 索引
p2 = a[1:2]
print(p1)
print(p2)
print(a.flags.owndata)  # 返回信息为:数组是否拥有它所使用的内存或从另一个对象中借用它
print(p1.flags.owndata)  # 花式索引是一个副本,有独立内存
print(p2.flags.owndata)  # 切片是一个视图,没有独立内存,更改这个切片会更改原数组

轴:

a = np.array([[1, 2, 3], [4, 5, 6]])
print(a)
print(a.sum(axis=0))  # 根据轴加和,轴代表维度的下标,0就是第一个维度
print(a.sum(axis=1))  # 根据轴加和,轴代表维度的下标,1就是第二个维度
print(a.mean(axis=0).shape)  # 返回在该轴上的元素个数
print(a.mean(axis=1).shape)
print(a.max(axis=1))  # 求该轴最大值
print(a.argmax(axis=1))  # 该轴最大数的下标

你可能感兴趣的:(python)