IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> Numpy笔记--版本1.16.4 -> 正文阅读

[Python知识库]Numpy笔记--版本1.16.4

常用小操作

arr1 = np.array([[1, 2, 3],
				                 [1, 2, 3],
				                 [4, 5, 6]])

arr2 = np.array([[1, 1, 2],
				                 [1, 2, 3],
				                 [2, 3, 3]])
# 矩阵相乘:行 乘 列     注意:行列一致才能相乘
x = np.dot(arr1, arr2)  # 方法1
y = arr1.dot(arr2)      	# 方法2
print(arr1.T)			# 矩阵转置
# 生成3行2列的随机矩阵 标准正态分布随机数
np.random.random(size=(3,2))
# 生成3行2列的随机 整数范围 矩阵
np.random.randint(0,10,size=(3,2))
# 生成3行2列的随机矩阵
np.random.random((3,2))
np.sum(arr1)# 求和
np.min(arr1)# 最小值
np.max(arr1)# 最大值
# 对列求和
np.sum(arr1, axis=0)  # 全部的列
# 对行求和
np.sum(arr1, axis=1)  # 全部的行
# 求矩阵最小值的索引
np.argmin(arr1) # 最小 索引
np.argmax(arr1) # 最大 索引
# 求矩阵平均值的两种方式
np.mean(arr1)    # 方法1
arr1.mean()         # 方法2
np.abs(arr1)  # 函数返回数字的绝对值。
np.median(arr1)  # 求矩阵中位数 奇数有1个中位数 偶数有俩
np.sqrt(arr1)		# 开方
np.sort(arr1)	    # 排序
# 条件变数
p = [[7, 0, 0, 5, 8, 6, 1, 5, 5, 0]]
a = np.clip(p,2,7)  # 小于2 就填2、大于7 就填7、 范围内不变
# 结果:[[7 2 2 5 7 6 2 5 5 2]]
# 取接近的最小整数
a = np.array([-1.7, -1.5, -0.2, 0.2, 1.5, 1.7, 2.0])
np.ceil(a)
结果:[-1. -1. -0.  1.  2.  2.  2.]

生成数组

np_ = np.arange(1, 8, 1)  # 生成数组(起点,终点,步长)
# np数组之间可直接加减乘除、**、%、//取整、矩阵元素都加减乘除
# 注意:列表与字符串相加是合并,相乘是成倍合并.不要混淆

np.zeros((5, 8), dtype='int32')  # 生成(行,列)0数组
# 注意:默认生成的是小数类型,可以单独指定它的数据类型

cry = np.ones((5, 8), dtype='int32')  # 生成1数组
gry0 = np.zeros_like(cry)  # 复制某np数组的格式:维度, 形状, 元素类型
gry1 = np.ones_like(cry)	# 用0补充 或者 用1补充

查看属性

# 普通格式转换np格式
array = np.array([[1, 2, 3, ],
					                  [4, 5, 6],
					                  [7, 8, 9]])
print(array.ndim)  # 维度
print(array.shape)  # 形状
print(array.size)  # 元素总数  注意:len()是数组长度, 无法查看深维度的个数
print(array.dtype)  # 元素类型

print(array[0, 0])  # np取元素		结果都为1
print(array[0][0])  # 列表取元素  	两种都可用
# 切片同理		[0:2,0.:3]

# 修改形状--- shape长宽
np_ = np.arange(1, 8, 1)  # 生成数组(起点,终点,步长)
np_.shape = (2, 4)  # 可直接进行更改维度,注意数量要与维度对的上,否则报错
np_1 = np.arange(1, 9)  # 生成1~8
 np_1.shape = (2, 2, 2)  # 变成3维  (页-行-列)			(页就是面)

# 修改元素类型—dtype
a = array.astype('float64')  # 修改类型 需要定义一个变量接收

# 测试日期类型数组  格式必须:'2013-01-01 01:01:01'
f = np.array(['2013-01-01 01:01:01'])
# Y年 M月 D日 h时 m分 s秒     D天  从计算机元年1970-01-01开始算起 
f = f.astype('datetime64')
f = f.astype('datetime64[Y]')

版本过高,去除警告的方法

import warnings
warnings.filterwarnings('ignore')

Numpy的内部基本数据类型

类型名类型表示符
布尔型bool_
有符号整数型int8(-128~127) / int16 / int32 / int64
无符号整数型uint8(0~255) / uint16 / uint32 / uint64
浮点型float16 / float32 / float64
复数型complex64 / complex128
字串型str_,每个字符用32位Unicode编码表示
日期类型datetime64

字符串型:1字节=8位
类型字符码

类型字符码
np.bool_?
np.int8/16/32/64i1 / i2 / i4 / i8
np.uint8/16/32/64u1 / u2 / u4 / u8
np.float/16/32/64f2 / f4 / f8
np.complex64/128c8 / c16
np.str_U
np.datetime64M8[Y] M8[M] M8[D] M8[h] M8[m] M8[s]

自定义复合类型

# 自定义复合类型--必须为列表套元组

data = [
    ('zs', [12, 23, 34], 54),
    ('ls', [11, 24, 53], 77),
    ('ww', [12, 23, 63], 15)
]

# 方式一
# [('起名字', '数据类型', '占几位')]
data = np.array(data, dtype=[('name', 'str', 2),
							                             ('score', 'int32', 3),
							                             ('age', 'int32', 1),
							                             ])
print(data[1]['score'])

# 方式二
# 固定键值对  两键固定:名字与数据类型
data = np.array(data, dtype={'names': ['name', 'score', 'age'],
                             'formats': ['U2', '3int32', 'int32']})
print(data[1]['score'])

视图变维


a = np.arange(1, 9)	# [1 2 3 4 5 6 7 8]	 		改维度-生成新数组
b = a.reshape(2, 4)	#视图变维  : b变为2行4列的二维数组
c = b.reshape(2, 2, 2) #视图变维    c变为2页2行2列的三维数组
d = c.ravel()	#视图变维	d变为1维数组

a.shape = (2, 4)			# 直接改变原数组对象的维度,不返回新数组
a.resize(2, 2, 2)

数组掩码

#  布尔掩码
a = np.arange(1, 9)
a1 = a > 3		# 判断      复杂判断   a[a %3 ==0]  需要3的倍数
print(a1)
# 结果:
# [False False False  True  True  True  True  True]
# 复杂条件判断  在 100内   同时3和7整除的数
res = np.arange(1, 101)
print(res[(res % 3 == 0) & (res % 7 == 0)])

# 索引掩码
res = np.array(['物品1', '物品2', '物品3'])
print(res[[2, 1, 0]])  # 可使用索引

mask = [0, 0, 0, 1, 2, 2, 1, 1, 0, 1, 0]  # 可以使用多个
np.array(mask)    # 注意转格式
print(res[mask])

合并数组

arr1 = np.array([1,2,3])
arr2 = np.array([4,5,6])
arr3 = np.vstack((arr1,arr2))  # 垂直合并
arr4 = np.hstack((arr1,arr2))  # 水平合并
arr5 = np.vstack((arr1,arr2,arr3))  # 垂直或者水平合并多个
arr = np.concatenate((arr1,arr2,arr1))
arr = np.concatenate((arr3,arr5),axis=0)  # 0 竖向合并  注意维度、形状 相同
# 一维度数据,无法转置
arr1_3 = np.atleast_2d(arr1)  # 将里面的数据转化2维 np.atleast_3d 是3维

分割数组

arr1 =  np.arange(12).reshape(3,4)
 # 切分
arr2,arr3 = np.split(arr1,2,axis=1)  # 水平方向分割,分成2份
arr4,arr5,arr6 = np.split(arr1,3,axis=0)  # 垂直方向分割,分成2份
arr7,arr8,arr9 = np.array_split(arr1,3,axis=1)  # 水平分割 3份不等分
arrv1,arrv2,arrv3 = np.vsplit(arr1,3)  # 垂直分割
arrv4,arrv5 = np.hsplit(arr1,2)  # 水平分割

np迭代元素

arr2 = np.arange(2, 14).reshape(3, 4)  # 生成2~13一维数组  .reshape改变形状
for i in arr2:  # 迭代行
    print(i)
for i in arr2.T:  # 迭代列
    print(i)
for i in arr2.flat:  # 每个元素迭代
    print(i)
  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-08-21 15:19:48  更:2021-08-21 15:20:50 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 10:37:30-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码