numpy 基础知识

一、引入包

import numpy as np

二、基础方法

1. Array(数组)


  • rank:数组的维数 a.ndim # 返回维度
a = np.array([1,2,3])
  • type(a) #类型
  • a.shape#形状
  • a = a.reshape((-1,n))#其中-1代表的是3,转化形状
  • b = np.zeros((n,m)) #用于创建全为0的数组,其中n,m代表形状
  • c = np.ones((n,m)) # 用于创建全为1的数组
  • d = np.full((n,m),value) #value数组的数字
  • np.zeros([2,4]) #全为0的2×4数组
  • np.ones([3,5]) #全为1 的3×5数组

eye 单位矩阵

  • e = np.eye(m)# 单位矩阵

random:随机数

  • f =np.random.random((n,m))#创建0~1之间的数据数,形状的n×m矩阵

  • f = np.random.randn(n,m) #创建形状为n×m的随机矩阵,为正负小数

  • np.random.rand(2,4) #2行4列的0~1之间的随机数

  • np.random.rand(): # 产生一个随机数

  • randint:随机整数 np.random.randint(1,10,3) #0~10之间的随机数,生成3个

  • randn:生成符合标准正态分布的随机数 np.random.randn(2,4) #生成2行4列

  • choice:生成指定数组中的随机数 np.random.choice([10,20,30])# 每次生成给出数组中的一个数作为随机数

  • distribute:生成符合贝塔分布 np.random.beta(1,10,100)#1~10之间生成100个数

  • np.random.uniform(2,9,num),在2-9 之间生成num个随机数


2. 数组索引 indexing


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

给a的第二列每个数都加10,能够采用下边三种方法:

(1)a[np.arange(3),1] +=10

(2)a[np.arange(2),[1,1,1]] +=10

(3)a[[0,1,2],[1,1,1] +=10

对其中的数组进行操作:判断a中大于10 的数,两种方法

(1)result_index = a>10 #result_index 返回为true和false形式
b =a[result_index] #返回大于10的数,得到一个新的列表

(2) b =a[a>10] #直接得到大于10的数的新的列表


3.元素的数据类型:


  • a = np.array([1.1,1.2])
  • a.dtype #判断数组数据类型
  • a = np.array([1.1,1.2],dtype=np.int64) #可以将小数直接变为整数类型
  • a = np.array([1.1, 1.2])
  • b = np.array(a,btype=np.int64) ##b为a取整数部分

4.数据运算及常用函数


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

(1)a+b等同:np.add(a,b)
(2)a-b等同:np.subtract(a,b)
(3)a*b等同np.multipy(a,b)
(4)a/b等同np.divide(a,b)
(5)np.sqrt(a) #对a每个元素开方
(6)a.dot(b):矩阵之间的乘法操作 等同:np.dot(a,b)
(7)np.concatenate((lst1,lst2),axis=0) #lst1 和lst2合并一行
(8)np.vstack((lst1,lst2)) #lst1 ,lst2 合并成两行
(9)np.hstack((lst1,lst2)) #lst1,lst2 合并成一行
(10)np.split(lst1,4) #将lst1 分成4分
(11)np.copy(lst1)#复制lst1
lst=np.arange(1,11).reshape([2,-1])#生成1~11的数组,将其划分为2行5列
(12)np.exp(lst)#指数操作
(13)np.exp2(lst) #指数平方
(14)np.sqrt(lst) #平方
(15)np.sin(lst) #sin
(16)np.log(lst) #对数 底数是自然底数

lst1 =[1,2,3,4,5,6]
lst2 =[11,12,13,14,15,16]
lst3 = np.concatenate((lst1,lst2),axis=0)
print(lst3)
lst4 = np.vstack((lst1,lst2))
print(lst4)
lst5 = np.hstack((lst1,lst2))
print(lst5)
lst6 =np.split(lst5,4)
print(lst6)
lst7 = np.copy(lst5)
print(lst7)
#运行结果:(按照顺序)
#[ 1  2  3  4  5  6 11 12 13 14 15 16]
#[[ 1  2  3  4  5  6]
#[11 12 13 14 15 16]]
#[ 1  2  3  4  5  6 11 12 13 14 15 16]
#[array([1, 2, 3]), array([4, 5, 6]), array([11, 12, 13]), array([14, 15, 16])]
#[ 1  2  3  4  5  6 11 12 13 14 15 16]

5.常用函数:


  1. sum:
  • np.sum(a) ##对所有的元素求和
  • np.sum(a,axis=0) #列
  • np.sum(a,axis=1) #行

axis =数字,表示的数组的维度-1,axis越大程度越深
max :找最大值
min:找最小值

  1. mean:求均值
  • np.mean(a) #所有元素求均值
  • np.mean(a,axis=0)#列
  • np.mean(a,axis=1)#行
  1. uniform:随机
  • np.random.uniform(1,100) #生成1~100之间的随机小数
list1 = np.random.uniform(-200,200,4000)
print(len(list1))
  • tile:数组作为元素,重复指定的次数

  • np.tile(a,(n,m))#a重复n×m次 列:n,行m次

  • argsort:数组中元素排序

  • a.argsort():返回为下标,从小到大排序默认

  • a.argsort(axis=0):列

  1. 矩阵转置操作
  • a.T 等同 np.transpose()

6. 广播


a = np.array([[1,2,3],[2,3,4],[3,4,5],[5,6,7]])b = np.array([1,2,3])
# 要求:a的每一行与b相加(1) for i in range(4):a[i,;] +=b(2) a +np.tile(b,(4,1))#将b重复4次成为和a形状相同的数组,然后让其相加
(3)a+b #不同维度的数据可以直接相加、减、乘、除,此为广播

7.expand_dims()


np.expand_dims(array,axis=0),改变数据的维度,改变形状
a =np.array([[1,2,3,4],[5,6,7,8,9]])
print(a.shape)
b = np.expand_dims(a,axis=0) # 行
print(b)
print(b.shape)
print(b[0][0][2])
print(b[0][1][1])
c = np.expand_dims(a,axis=3) #列
print(c)
print(c.shape)
print(c[0][0][2])
print(c[1][0][1])

8. ndarray


def main():list =[[1,3,5],[2,4,5]]print(type(list))# 返回类型np_lst =np.array(list)print(type(np_lst))np_lst = np.array(list,dtype=np.float) #最基础数据结构# bool ,int,int8,int16,int64,int128,uint8,uint32,uint64"""方法:np_lst.shape # 形状np_lst.ndim  #数组维度np_lst.dtype #数组类型np_lst.itemsize #数组中数据的长度np_lst.size # 数组的大小 (长度,多维数据长度和) """       if __name__=='__main__':main()
  • np.arange(1,11).reshape()
  • asarray用法 :将列表转化为数组
a =[1,2]
np.asarray(a)
# array([1,2])

将数据转化为float和int型

np.asarray(a,‘f’) # 转化为float32型

np.asarray(a,'i) #转化为int型

判断a中数是否大于0,如果大于0,将数置为1

a = np.asarray(a) #必须先将数转化为array型

(1) np.asarray(a>0,'i')
# 输出结果:
array([[1, 1],[1, 0]])(2) np.asarray(a>0,'f')
# 输出结果:array([[ 1., 1.],
[ 1., 0.]], dtype=float32

9. array 与asarray的区别:


共同作用:将原数组或numpy格式数组拷贝一份,或选其中部分元素

当原数据是numpy格式时,asarray为取其中的部分数据(不拷贝),array为拷贝原数据部分内容

#example 1:
data1=[[1,1,1],[1,1,1],[1,1,1]]
arr2=np.array(data1)
arr3=np.asarray(data1)
data1[1][1]=2  data1:
[[1, 1, 1], [1, 2, 1], [1, 1, 1]]
arr2:
[[1 1 1]
[1 1 1]
[1 1 1]]
arr3:
[[1 1 1]
[1 1 1]
[1 1 1]]#example 2:
arr1=np.ones((3,3))
arr2=np.array(arr1)
arr3=np.asarray(arr1)
arr1[1]=2arr1:
[[ 1.  1.  1.]
[ 2.  2.  2.]
[ 1.  1.  1.]]
arr2:
[[ 1.  1.  1.]
[ 1.  1.  1.]
[ 1.  1.  1.]]
arr3:
[[ 1.  1.  1.]
[ 2.  2.  2.]
[ 1.  1.  1.]]
# 此时发生改变

numpy -- 基础方法操作 array和asarray数据类型常用基础方法相关推荐

  1. js判断数据类型常用的方法

    目录 基本数据类型有哪些 常见的判断js数据类型的方法有如下几种 一.typeof 二.instance of 三. 使用constructor判断数据类型 四.对象原型链判断方法:Object.pr ...

  2. 电大计算机应用基础win7操作,2018年电大专科计算机应用基础win7系统上机操作题操作.pdf...

    电大专科 2007/ 计算机应用基础 win7 系统上机操作题操作要点 1.打开当前试题目录中的文件: 在 Word2010 窗口中点击上方工具栏的 打" 开 ",点击中间的要打开 ...

  3. C#操作Excel时,Excel常用的方法和属性zz

    生成excel的时候有时候需要设置单元格的一些属性,可以参考一下: range.NumberFormatLocal = "@";     //设置单元格格式为文本 range =  ...

  4. js判断数据类型常用的6种方法

    js判断数据类型常用的方法,不论在开发中开始在面试中,都是经常遇到的问题,尤其是在面试时,当面试官问及js判断数据类型的方法时,回答的越多,说明掌握的广度跟深度越多,感觉自己逼格也越高.废话不多说了, ...

  5. Python入门基础篇(四)字符串的常用操作,全面易懂,简单实用!!!

    请认真阅读哦!!! 字符串几乎是所有编程语言在项目开发过程中涉及最多的一块内容,许多地方都是用到字符串的基本操作,前面讲了列表.元组,这次就来说说字符串吧 文章目录 字符串的常用操作: 1.拼接字符串 ...

  6. 计算机文化基础word的基本知识点,《计算机文化基础》教案.doc

    <<计算机文化基础>教案.doc>由会员分享,可在线阅读,更多相关<<计算机文化基础>教案.doc(23页珍藏版)>请在万象文库上搜索. 1.课 程 教 ...

  7. js进阶高级与ES6,常用函数方法

    ES6与高级 2021.9.11 class类的使用 类的本质就是function函数 在ES6中声明类用class关键字 ES6中类没有变量提升,所以必须先定义类,才能实例化对象 类里面的共有属性和 ...

  8. 电脑上的c语言程序打不开,电脑软件打不开常用处理方法

    电脑软件打不开怎么办?那么你知道电脑软件打不开常用处理方法么?接下来是小编为大家收集的电脑软件打不开常用处理方法,欢迎大家阅读: 电脑软件打不开常用处理方法 提示如下图: [常用处理方法] 1.在&q ...

  9. JVM之常用基础参数详解

    JVM之常用基础参数详解 目录 常用基础参数内存Xms,Xmx讲解 常用基础参数栈内存Xss讲解 常用基础参数元空间MetaspaceSize讲解 常用基础参数PrintGCDetails回收前后对比 ...

最新文章

  1. 王思聪究竟上了多少次热搜?
  2. wordpress关闭博客评论的两种方法
  3. centOS+uwsgi+nginx 部署flask项目,问题记录
  4. ubuntu server修改语言
  5. apache2 wordpress目录权限_WSL(ubuntu)的Apache2+CGI(包含CGICC)+SSL的配置
  6. javascript 中的innerHTML的用法
  7. IntelliJ IDEA代码常用的快捷键(自查)
  8. obj.val 非数组_在Ruby中使用Array.new(size,obj)创建数组
  9. 告别并不遥远的儿时,抬眼期待未来
  10. Hash Collision DoS 攻击
  11. 无法通过ip地址连接其它电脑的数据库,但是又可以ping通,错的不是配置,而是差了一个步骤
  12. paip.输入法编程---智能动态上屏码儿长调整--.txt
  13. 路孚特:300天350个版本,旗舰移动产品“0”到“1”的交付之路
  14. php随机给用户抽奖,PHP随机按百分比抽奖
  15. SHT20读取温湿度,基于cubemx
  16. 解决苹果手机双击页面放大的问题
  17. 通过追女孩时的常见对话来看你会不会聊天
  18. 规章制度的处理:既要照章处理,又要考虑特殊情况
  19. 切线空间(Tangent Space)法线映射(Normal Mapping)
  20. 【云原生】云原生在网络安全领域的应用

热门文章

  1. 华为回应波兰员工事件;支付宝 22 亿元买楼;快播王欣开干微信? | 极客头条...
  2. 通信原理——多址技术
  3. [FOJ 2121] 神庙逃亡
  4. 百度SEO 利用百度地图提升网站本地搜索排名
  5. jquery 中$.ajax().done() 的用法
  6. 美团Android实习一面
  7. Python Bytes和String相互转换,解决Bytes转换String时b‘xxx‘问题
  8. [附源码]java+ssm计算机毕业设计广播点歌后台系统nd1wd(源码+程序+数据库+部署)
  9. Git详细教程(五):查看分支、创建分支、合并分支
  10. 监控android USB拔插