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知识库 -> Python-Numpy库初体验 -> 正文阅读

[Python知识库]Python-Numpy库初体验

import numpy as np

创建Ndarray对象,此对象为一个矩阵

a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]], dtype=int)

输出矩阵a

print(a)

输出a的类型

print(“a对象的类型:”, type(a))

输出a的维数(秩)

print(“维数:”, a.ndim)

输出a的维度

print(“维度:”, a.shape)
print(“元素总数:”, a.size)
print(“元素类型:”, a.dtype)
print(“元素大小:”, a.itemsize)

创建零矩阵

b = np.zeros((3, 3), int, ‘C’)
print(b)

创建1矩阵

c = np.ones(shape=(3, 3), dtype=np.int, order=‘C’)
print?

从已有数组(列表,元组,数组等类型)创建数组

d = np.asarray(a=a, dtype=np.float, order=‘F’)
print(d)

向量切片

f = np.arange(10)
s = slice(0, 7, 2)
print(f[s])

向量索引

g = f[2:7:1]
print(g)

矩阵切片

print(a[1:]) # 从第二行开始切片
print(a[:1]) # 在第二行结束切片

切片还可以包括省略号 …,来使选择元组的长度与数组的维度相同。

print(a[…, 1:]) # 第二列及其剩下元素
print(a[1:, …]) # 第一行及其以后元素

NumPy高级索引

x = np.array([[0, 1, 2], [3, 4, 5], [6, 7, 8], [9, 10, 11]])
y = x[[0, 1, 2], [0, 1, 0]] # 获取矩阵x中(0,0)(1,1)(2,0)处的值
print(y)

整数索引

h = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
b = h[1:3, 1:3]
c = h[1:3, [1, 2]]
d = h[…, 1:]
print(b)
print?
print(d)

布尔索引

print(a[a > 5])

花式索引

print(a[[2, 1, 3]])

NumPy广播

i = np.array([1, 2, 3])
j = np.array([0, 1, 0])
c = i * j # 向量对应位置相乘
print?
print(a + i) # a是34矩阵,i是13向量,二者相加,触发广播机制,等效于把数组 i 在二维上重复 4 次再运算:

NumPy迭代访问

迭代访问a中元素

for i in np.nditer(a):
print(i, end=",")
print("\n")
for i in np.nditer(a.T):
print(i, end=",")
print("\n") # attention:a和a.T遍历出来一样,说明内存中存储顺序一样

C风格遍历(行序优先)

for i in np.nditer(a, order=‘C’):
print(i, end=",")
print("\n")

C风格遍历(列序优先)

for i in np.nditer(a, order=‘F’):
print(i, end=",")
print("\n")

修改矩阵元素的值

for i in np.nditer(a, op_flags=[‘readwrite’]):
i[…] = 2 * i
print(a)

NumPy矩阵操作

1.修改矩阵形状

a = a.reshape(2, 6)
print(a)

2.迭代器

for element in a.flat:
element = int(element / 2)
print(element)
print(a) # 注: 迭代器不影响矩阵本身的值

3.拷贝数组,对拷贝数组做操作不影响原数组

b = a.flatten

4. 展平数组元素

print(a.ravel())

5.转置

print(np.transpose(a))

6.轴变换

b = np.arange(8).reshape(2, 2, 2) # 生成222矩阵,轴0为深度,轴1位宽度,轴2位长度
print(b)
print(np.rollaxis(b, 2, 1)) # 将轴2变换到轴1

7.轴交换

print(np.swapaxes(b, 1, 2))

8.修改数组维度

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

对 y 广播 x

b = np.broadcast(x, y)

它拥有 iterator 属性,基于自身组件的迭代器元组

print(‘对 y 广播 x:’, b)

矩阵算数运算

a = np.arange(1, 10, dtype=np.float_).reshape(3, 3)
b = np.array([10, 10, 10])
print(a + b)
print(a - b)
print(a * b)
print(a / b)

返回矩阵各个元素的倒数

print(np.reciprocal(a))

返回矩阵各个元素的幂

print(np.power(a, 2))

Numpy统计函数

print(a)
print(np.amin(a, 1)) # 寻找最小纵轴
print(np.amax(a, 0)) # 寻找最大横轴
print(np.ptp(a)) # 寻找最大值和最小值的差
print(np.median(a)) # 寻找矩阵的中位数
print(np.mean(a)) # 矩阵的算数平均值
print(np.average(a, axis=0, weights=[1, 2, 3])) # 矩阵的加权平均值

标准差 std = sqrt(mean((x - x.mean())**2))

print(np.std(a))

Numpy排序、条件筛选函数

dt = np.dtype([(‘name’, ‘S10’), (‘age’, int), (‘height’, int), (‘weight’, int)])
matrix = np.array([(‘Hu’, 22, 167, 74), (‘Xian’, 23, 170, 75), (‘F’, 23, 169, 55)], dtype=dt)
np.sort(matrix, order=‘weight’)
print(matrix)

“”“Numpy矩阵库”""

1.矩阵的创建

print(np.ones((3, 3), dtype=int, order=‘C’)) # 全1阵
print(np.zeros((3, 3), dtype=int)) # 全0阵
print(np.eye(3, 4, 0, dtype=int)) # 0号对角线全为1的阵
print(np.identity(5, dtype=int)) # 单位阵

2.矩阵转置

print(matrix.T)
print(np.transpose(matrix))

“”“NumpyLinearAlgebra”""

dot 两个数组的点积,即元素对应相乘。

vdot 两个向量的点积

inner 两个数组的内积

matmul 两个数组的矩阵积

determinant 数组的行列式

solve 求解线性矩阵方程

inv 计算矩阵的乘法逆矩阵

1.矩阵点乘2*3阶

a = np.array([[1, 2, 3], [4, 5, 6]]) #
b = np.array([[7, 8], [9, 10], [11, 12]]) # 3*2阶
c = np.array([1, 2, 3])
d = np.array([4, 5, 6])
print(np.dot(c, c)) # 向量内积
print(np.dot(a, b)) # 矩阵乘法
print(np.vdot(c, c)) # 向量点乘

numpy.inner() 函数返回一维数组的向量内积。对于更高的维度,它返回最后一个轴上的和的乘积

print(np.inner(a, a)) # 对于23阶数组a,等价于aa.T

numpy.matmul 函数返回两个数组的矩阵乘积。 虽然它返回二维数组的正常乘积,但如果任一参数的维数大于2,则将其视为存在于最后两个索引的矩阵的栈,并进行相应广播。

可理解为升阶广播乘

print(np.matmul(a, c))

求解矩阵的行列式

e = np.array([[5, 2, 1], [1, 2, 5], [34, 1, 34]], dtype=int)
print(e)
print("det(e) = ", int(np.linalg.det(e)))

求解线性方程组

x + y + z = 6

2y + 5z = -4

2x + 5y - z = 27

A = np.array([[1, 1, 1], [0, 2, 5], [2, 5, -1]])
B = np.array([6, -4, 27])
print(np.linalg.solve(A, B)) # Numpy求解线性方程组
print(np.linalg.inv(A)) # 求解矩阵的逆

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-10-08 11:45:45  更:2021-10-08 11:46:43 
 
开发: 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 17:31:16-

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