Numpy的基本运算及操作
import numpy as np '''
一.算术运算
元素级
1.标量 加减乘除 数组(元素级:位置对应) 自增和自减 通用函数
2.数组 +-*/ 数组 (元素级)
3.条件和布尔运算 a>0.5 满足的True,不满足False a[a>0.5]:满足条件的组成新的数组 非元素级
1.矩阵的积 dot(A,B) A.dot(B)
2.聚合函数 【求和:a.sum(),最值:a.max(),平均值:a.mean(),标准差:a.std()】 二.数组操作
1.连接数组【同矩阵类似】
1.1垂直扩展(入栈) vstack(A,B)
1.2水平扩展(入栈) hstack(A,B) 2.数组切分
2.1垂直切分 vsplit()
2.2水平切分 hsplit()
2.3 np.split(H,(1,3),axis=0) split切分,需要指定轴
三.常用概念
1.副本或视图:数组运算 和 操作 返回的不是副本就是视图 但是赋值运算不会创建副本【a b = a b在运用时时在调用a,没有副本,所以a改变了,b的调用值夜改变】可以用copy()创建副本
2.向量化
3.广播机制 【数组兼容:两数组的每一维等长或者其中一个数组是一维的】【两原则:1.缺失的维度补上1 2.较小数组扩充维度,使之与大数组维度相同】
4.结构化数组
5.数组文件的读写 '''
A = np.zeros((3,3)) ##3行3列
B = np.ones((2,3)) ##2行3列
C = np.transpose(B) ##转置
D = np.vstack((A,B))
E = np.hstack((A,C))
F = np.transpose((D))
H = np.vstack((E,F)) ##1.1垂向入栈
print(D)
'''
[[0. 0. 0.]
[0. 0. 0.]
[0. 0. 0.]
[1. 1. 1.]
[1. 1. 1.]]
'''
##1.2横向入栈
print(E)
'''
[[0. 0. 0. 1. 1.]
[0. 0. 0. 1. 1.]
[0. 0. 0. 1. 1.]]
''' print(H)
'''
[[0. 0. 0. 1. 1.]
[0. 0. 0. 1. 1.]
[0. 0. 0. 1. 1.]
[0. 0. 0. 1. 1.]
[0. 0. 0. 1. 1.]
[0. 0. 0. 1. 1.]]
'''
##2.1垂直切分 np.vsplit(H,2)均分为两部分
[A1,A2,A3] = np.vsplit(H,(1,3)) ## 按行索引1,3,分开,分成3部分
print(A1)
print(A2)
print(A3) ##2.2水平切分
[B1,B2,B3] = np.hsplit(H,(1,3)) ## 按列索引1,3,分开,分成3部分
print(B1)
print(B2)
print(B3) ##2.3 np.split(H,(1,3),axis=0) split切分,需要指定轴 ### 广播机制
a = np.arange(16).reshape((4,4))
b = np.arange(4)
print(a.shape)
print(b.shape)
'''
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]
[12 13 14 15]]
[0 1 2 3] (4, 4)
(4,) 为缺失的维度补上1 (4,1)
''' c = a+b
print(c)
'''
[[ 0 2 4 6]
[ 4 6 8 10]
[ 8 10 12 14]
[12 14 16 18]] 一维数组+二维数组,其中一个数组是一维,满足兼容条件。可以应用广播机制。
第二个原则:缺失元素都用已有元素填充
[0,1,2,3]
填充后
[[0,1,2,3]
[0,1,2,3]
[0,1,2,3]
[0,1,2,3]] ''' ###两个数组形状和维度不同
m = np.arange(6).reshape(3,1,2)
n = np.arange(6).reshape(3,2,1)
print(m)
print(n)
print(m+n)
'''
[[[0 1]] [[2 3]] [[4 5]]]
[[[0]
[1]] [[2]
[3]] [[4]
[5]]] m数组:第二维1 扩充到2 已有元素填充
[[[0 1],[[0 1]] [[2 3],[2 3]] [[4 5],[4 5]]] n数组 :第3维 1 扩充到2 已有元素填充
[[[0,1],[1,1]] [[2,2],[3,3]] [[4,4],[5,5]]] m+n:
[[[ 0 1],[ 1 2]] [[ 4 5],[ 5 6]] [[ 8 9],[ 9 10]]]
'''
Numpy的基本运算及操作的更多相关文章
- Numpy入门 - 数组切片操作
本节主要演示数组的切片操作,数组的切片操作有两种形式:更改原数组的切片操作和不更改原数组的切片操作. 一.更改原数组的切片操作 import numpy as np arr = np.array([1 ...
- Numpy数组对象的操作-索引机制、切片和迭代方法
前几篇博文我写了数组创建和数据运算,现在我们就来看一下数组对象的操作方法.使用索引和切片的方法选择元素,还有如何数组的迭代方法. 一.索引机制 1.一维数组 In [1]: a = np.arange ...
- Numpy 数组的切片操作
实例+解释如下(表格):关键是要明白python中数组的下标体系.一套从左往右,一套从右往左. 1 import numpy as np 2 import sys 3 4 def main(): 5 ...
- Numpy 中的聚合操作
# 导包 import numpy as np sum np.random.seed(10) L = np.random.random(100) sum(L) np.sum(L) min np.min ...
- (二)初识NumPy库(数组的操作和运算)
本章主要介绍的是ndarray数组的操作和运算! 一. ndarray数组的操作: 操作是指对数组的索引和切片.索引是指获取数组中特定位置元素的过程:切片是指获取数组中元素子集的过程. 1.一维数组的 ...
- 初探numpy——广播和数组操作函数
numpy广播(Broadcast) 若数组a,b形状相同,即a.shape==b.shape,那么a+b,a*b的结果就是对应数位的运算 import numpy as np a=np.array( ...
- Numpy 对于矩阵的操作持续更新
>>> import numpy as np >>> a = np.random.randint(10,size=(5,5)) >>> a arr ...
- Numpy的各种下标操作
技术背景 本文所使用的Numpy版本为:Version: 1.20.3.基于Python和C++开发的Numpy一般被认为是Python中最好的Matlab替代品,其中最常见的就是各种Numpy矩阵类 ...
- python numpy 使用笔记 矩阵操作
(原创文章转载请标注来源) 在学习机器学习的过程中经常会用到矩阵,那么使用numpy扩展包将是不二的选择 建议在平Python中用多维数组(array)代替矩阵(matrix) 入门请考 http:/ ...
随机推荐
- J Less taolu
链接:https://ac.nowcoder.com/acm/contest/338/J来源:牛客网 题目描述 Less taolu, more sincerity. This problem is ...
- C# PDF文件转图片
参考:https://blog.csdn.net/lai124793549/article/details/53392281 https://www.cnblogs.com/xiewei123/p/1 ...
- 攻防世界--logmein
测试文件:https://adworld.xctf.org.cn/media/task/attachments/a00849bb514c413f8a6526f6bb56c628 1.准备 得到信息 6 ...
- eclipse不小心删除文件如何恢复
转自:https://blog.csdn.net/u012129031/article/details/78791277 1.右键点击java项目工程名,选择restort from history, ...
- python指定cpu使用率,与内存占用率
python指定cpu使用率,与内存占用率 """ runing.py -c 2 -t 0.01 -m 1000 -c cpu核数,不加-c参数为最大核数 -t cpu运 ...
- Sass Maps的函数-map-keys($map)
map-keys($map) 函数将会返回 $map 中的所有 key.这些值赋予给一个变量,那他就是一个列表.如: map-keys($social-colors); 其返回的值为: "d ...
- 记录每个action执行时间
import org.apache.commons.lang.time.StopWatch; import org.aspectj.lang.JoinPoint; import org.aspectj ...
- docker:docker的基本了解
1.什么是docker 简单的理解:docker相当于vmvare,容器相当于多个虚拟机,vmvare上可以运行ubantu16.04的虚拟机,也可以运行centos虚拟机,还可以运行redhat虚拟 ...
- struts2的作用是什么
struts2是一种重量级的框架,位于MVC架构中的controller,可以分析出来,它是用于接受页面信息然后通过内部处理,将结果返回. 同时struts2也是一个web层的MVC框架,那么什么是s ...
- restful风格接口类型和优点
从事web开发工作有一小段时间,REST风格的接口,这样的词汇总是出现在耳边,然后又没有完全的理解,您是不是有和我相同的疑问呢?那我们一起来一探究竟吧! 就是用URL定位资源,用HTTP描述操作. 知 ...