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的基本运算及操作的更多相关文章

  1. Numpy入门 - 数组切片操作

    本节主要演示数组的切片操作,数组的切片操作有两种形式:更改原数组的切片操作和不更改原数组的切片操作. 一.更改原数组的切片操作 import numpy as np arr = np.array([1 ...

  2. Numpy数组对象的操作-索引机制、切片和迭代方法

    前几篇博文我写了数组创建和数据运算,现在我们就来看一下数组对象的操作方法.使用索引和切片的方法选择元素,还有如何数组的迭代方法. 一.索引机制 1.一维数组 In [1]: a = np.arange ...

  3. Numpy 数组的切片操作

    实例+解释如下(表格):关键是要明白python中数组的下标体系.一套从左往右,一套从右往左. 1 import numpy as np 2 import sys 3 4 def main(): 5 ...

  4. Numpy 中的聚合操作

    # 导包 import numpy as np sum np.random.seed(10) L = np.random.random(100) sum(L) np.sum(L) min np.min ...

  5. (二)初识NumPy库(数组的操作和运算)

    本章主要介绍的是ndarray数组的操作和运算! 一. ndarray数组的操作: 操作是指对数组的索引和切片.索引是指获取数组中特定位置元素的过程:切片是指获取数组中元素子集的过程. 1.一维数组的 ...

  6. 初探numpy——广播和数组操作函数

    numpy广播(Broadcast) 若数组a,b形状相同,即a.shape==b.shape,那么a+b,a*b的结果就是对应数位的运算 import numpy as np a=np.array( ...

  7. Numpy 对于矩阵的操作持续更新

    >>> import numpy as np >>> a = np.random.randint(10,size=(5,5)) >>> a arr ...

  8. Numpy的各种下标操作

    技术背景 本文所使用的Numpy版本为:Version: 1.20.3.基于Python和C++开发的Numpy一般被认为是Python中最好的Matlab替代品,其中最常见的就是各种Numpy矩阵类 ...

  9. python numpy 使用笔记 矩阵操作

    (原创文章转载请标注来源) 在学习机器学习的过程中经常会用到矩阵,那么使用numpy扩展包将是不二的选择 建议在平Python中用多维数组(array)代替矩阵(matrix) 入门请考 http:/ ...

随机推荐

  1. vue图片预加载

    目的: 图片预加载能够使得用户在浏览后续页面的时候,不会出现图片加载一半导致浏览不流畅的情况. 一.方法一 项目打开的时候要对图片进行预加载,在App.vue里面的beforeCreate添加预加载程 ...

  2. 基于mesos 安装 jenkins

    mesos master 机子上安装  jenkins git clone https://github.com/jenkinsci/mesos-plugin.git && cd me ...

  3. nodejs,事件轮询总结

    宏任务 script,setTimeoout,setInterval,setlmmediate(node 独有),I/o,render渲染 微任务 process.nextTick(),promise ...

  4. 自定义的最简单的可回调的线程任务CallbackableFeatureTask(模仿google的ListenableFutureTask)

    1.使该Task继承Callable,Runable import java.util.concurrent.Callable; import java.util.function.Consumer; ...

  5. 2018-2-13-Win10-UWP-Intro-to-controls-and-events

    title author date CreateTime categories Win10 UWP Intro to controls and events lindexi 2018-2-13 17: ...

  6. quotaon - 开启关闭文件系统配额

    总览 (SYNOPSIS) quotaon [ -e | d ] [ -vug ] filesystem... quotaon [ -e | d ] [ -avug ] quotaoff [ -e | ...

  7. 后缀自动机(SAM) 学习笔记

    最近学了SAM已经SAM的比较简单的应用,SAM确实不好理解呀,记录一下. 这里提一下后缀自动机比较重要的性质: 1,SAM的点数和边数都是O(n)级别的,但是空间开两倍. 2,SAM每个结点代表一个 ...

  8. rabbitmq 从channal获得socket

    std::string queue_name = "hello100"; AmqpClient::Channel::ptr_t channel = AmqpClient::Chan ...

  9. Winfrom 弹出窗体位置设定

    Winfrom 窗体弹出位置设定,其实就是两种模式,第一种模式是通过Winform提供的属性来设定:第二种模式是自定义,可以相对于软件本身,也可以是相对于屏幕. 一.第一种模式 使用Winform提供 ...

  10. Java打印流学习

    打印流 打印流的主要功能是用于输出,在整个IO包打印流分为两种类型,打印流可以很方便的进行输出. 1.字节打印流:PrintStream(在字节输出时,可以增强输出功能) 2.字符打印流:PrintW ...