一.改变数组形态

reshape()——通过改变数组的维度改变数组形态

import numpy as np
Array=np.arange(1,17,1)
Array

Array_1=np.arange(1,17,1).reshape(4,4) #将数据从(16.)变为(4,4)
Array_1

Array_2=np.arange(1,17,1).reshape(4,2,2)#将数据从(16.)变为(4,2,2)
Array_2

展平

flatten()flatten('F')——对数组进行横向或纵向展平

Array_1.flatten() #横向展平

Array_1.flatten('F') #纵向展平

切割

split(数组,分割轴,axis=0/1)——对数组进行横向或纵向切割

Array_a1,Array_b1=np.split(Array_1,2)  #axis=0 进行横向切割
print(Array_a1,'\n\n',Array_b1)

Array_a2,Array_b2=np.split(Array_1,2,axis=1)  #axis=0 进行纵向切割
print(Array_a2,'\n\n',Array_b2)

组合

concatenate((数组1,数组2,….,数组3),aixs=0/1)对多个数组进行横或纵组合

np.concatenate((Array_1,Array_b1,Array_a1)) #aisx=0 进行横向组合

np.concatenate((Array_1,Array_b2,Array_a2),axis=1) #aisx=0 进行横向组合

二.ufunc数组通用运算规律

四则运算+幂运算

Array_1+Array_1 #加法

Array_1-Array_1 #减法

Array_1*Array_1 #乘法

Array_1/Array_1 #除法

Array_1**2 #幂运算

比较运算

Array_3=Array_1*2
print(Array_1>Array_3,'\n\n',Array_1>=Array_3) #> ,>=

print(Array_1<Array_3,'\n\n',Array_1<=Array_3) #< ,<=

Array_1==1

逻辑运算

NumPY中 all 表示逻辑and,any表示逻辑or

print([[1,2,3]]and[[1,0,2,3]])
np.all([[1,2,3]]==[[1,0,2,3]])

print([[1,2,3]]or[[1,0,2,3]])
np.any([[1,2,3]]==[[1,0,2,3]])

广播机制

在进行数组结构不相同的运算时

1.让所有输入数组向最长的数组看齐,shape(结构)不足的用1补齐

2.输出数组shape是输入数组shape各轴上的最大值

3.当数组之间某个轴相同,或一个=1。时可以运算,否则报错

4.当某个轴长度为1,沿这个轴使用轴上第一个数组

a=np.array([1,1,1])
b=np.array([[1],[2],[3]])
print(a,'\n\n',b)
a+b



三.随机数

random

NumPy中提供了random模块可以生成多种类型,概率的随机数

随机数生成

1.random(元素个数)——随机生成小于1的数

np.random.random(10)

2.rand(轴0,轴1,...轴n)——生成均匀分布的随机数

np.random.rand(2,2)

3.randn(轴0,轴1,...轴n)——生成服从正态分布的随机数

np.random.randn(2,2,2)

4.randint(起始值,终值,size=[轴0,轴1,...轴n])——生成复合范围内的随机数

np.random.randint(1,5,[2,2,2])

数组轴的随机数

1.shuffle(数组)——对轴0随机排序,并改变数组

c=np.array([[1,2,3],[4,5,6],[7,8,9]])
c

np.random.shuffle(c)
c

2.permutation(数组)——对轴0改变,但不改变数组

c=np.array([[1,2,3],[4,5,6],[7,8,9]])
c

np.random.permutation(c)

随机数种子

seed (int)——定义随机数的种子,得到初始固定的随机数

np.random.seed(10)
np.random.rand(3,3)

np.random.seed(10)
np.random.rand(3,3)

四.统计分析

排序

sort()——改变原数组,横向或纵向的直接排序

Array=np.array([[3,2,1],[6,8,9],[10,1,3]])
Array

Array.sort(axis=1) #aixs=1横向培训
Array

Array=np.array([[3,2,1],[6,8,9],[10,1,3]])
Array.sort(axis=0) #aixs=1纵向培训
Array

argsort()——先排序,再排序后输出下标,不改变数组

Array=np.array([[3,2,1],[6,8,9],[10,1,3]])
Array.argsort()

lexsort(数组1,数组2……数组n)——多个数组在同轴上综合下标排序,不改变数组

a=np.array([3,2,1])
b=np.array([5,6,4])
c=np.lexsort((a,b))
c

b[c] #输出b数组的排序

a[c] #输出a数组的排序

去重复

unique()——进行数组里的去重

a=np.array([1,1,2,3,4,4,5])
print(a,'\n\n',np.unique(a))

重复输出

repeat(次数,axis=0/1)——将数组进行横向或纵向克隆

注意:axis=0会将数组展平

print(Array)
print('\n',Array.repeat(2),'\n')
print(Array.repeat(2,axis=1))

常用统计函数

——都可以用axis=0或1来调整操作轴向

2.掌握numpy数组的更多相关文章

  1. numpy数组的操作

    numpy - 介绍.基本数据类型.多维数组ndarray及其内建函数 http://blog.csdn.net/pipisorry/article/details/22107553 http://w ...

  2. numpy数组、向量、矩阵运算

    可以来我的Github看原文,欢迎交流. https://github.com/AsuraDong/Blog/blob/master/Articles/%E6%9C%BA%E5%99%A8%E5%AD ...

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

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

  4. 操作 numpy 数组的常用函数

    操作 numpy 数组的常用函数 where 使用 where 函数能将索引掩码转换成索引位置: indices = where(mask) indices => (array([11, 12, ...

  5. NumPy 超详细教程(1):NumPy 数组

    系列文章地址 NumPy 最详细教程(1):NumPy 数组 NumPy 超详细教程(2):数据类型 NumPy 超详细教程(3):ndarray 的内部机理及高级迭代 文章目录 Numpy 数组:n ...

  6. NumPy数组对象

    1.创建NumPy数组 import numpy as np # 创建3*2*4的三维数组 a = np.arange(24).reshape(3, 2, 4) # 打印三维数组的所有元素 print ...

  7. Numpy 数组属性

    Numpy 数组的维数称为秩(rank),一维数组的秩为 1 , 二维数组的秩为 2 , 以此类推:在Numpy中, 每一个线性的数组称为是一个轴(axis),也就是维度(dimensios).比如说 ...

  8. numpy 数组对象

    numpy 数组对象NumPy中的ndarray是一个多维数组对象,该对象由两部分组成:实际的数据,描述这些数据的元数据# eg_v1 import numpy as np a = np.arange ...

  9. python numpy 数组拼接

    我就写一下我遇到的,更多具体的请看Python之Numpy数组拼接,组合,连接 >>> aarray([0, 1, 2],       [3, 4, 5],       [6, 7, ...

  10. numpy数组(5)-二维数组的轴

    numpy的mean(),std()等方法是作用于整个numpy数组的,如果是二维数组的话,也是整个数组,包括所有行和列,但我们经常需要它仅作用于行或者列,而不是整个二维数组,这个时候,可以定义轴ax ...

随机推荐

  1. codeforces 758D

    D. Ability To Convert time limit per test 1 second memory limit per test 256 megabytes input standar ...

  2. spring-cloud-eureka-client-consumer

    服务注册中心eureka-server已经搭好,并且SPRING-CLOUD-NETFLIX-EUREKA-CLIENT-APPLICATION提供一个hello服务 编写一个eureka-clien ...

  3. js map(Number) All In One

    js map(Number) All In One map() 方法创建一个新数组,其结果是该数组中的每个元素是调用一次提供的函数后的返回值. let newArray = arr.map(callb ...

  4. css sticky & 吸顶效果

    css sticky & 吸顶效果 demo https://codepen.io/xgqfrms/pen/PoqyVYz css position sticky not working ht ...

  5. CURL & Weather

    CURL & Weather https://wttr.in/ $ curl wttr.in https://github.com/chubin/wttr.in refs http://www ...

  6. Node.js & BFF & FaaS

    Node.js & BFF & FaaS server https://github.com/PacktPublishing/Node.js-Web-Development-Fourt ...

  7. requestAnimationFrame & canvas

    requestAnimationFrame & canvas https://codepen.io/xgqfrms/pen/jOEPjLJ See the Pen requestAnimati ...

  8. BTC暴涨市值仅次于亚马逊,NGK推出新人助力空投,直接免费送VAST!

    数据显示,在谷歌搜索中,关键词"BTC"的全球搜索指数在过去一周达到满值100点.特斯拉"加持"下,比特币重启暴涨模式,最高报价48126美金单价,非小号数据显 ...

  9. JMM内存模型相关笔记整理

    JMM 内存模型是围绕并发编程中原子性.可见性.有序性三个特征来建立的 原子性:就是说一个操作不能被打断,要么执行完要么不执行,类似事务操作,Java 基本类型数据的访问大都是原子操作,long 和 ...

  10. JDK源码阅读-DirectByteBuffer

    本文转载自JDK源码阅读-DirectByteBuffer 导语 在文章JDK源码阅读-ByteBuffer中,我们学习了ByteBuffer的设计.但是他是一个抽象类,真正的实现分为两类:HeapB ...