from numpy import *
print(random.rand(4,4))   #4*4随机数组
randMat=mat(random.rand(4,4))  #mat()将数组转化为矩阵
print(randMat)

Numpy提供了两种基本的对象:

  • ndarray   (n-dimensional array object)数组
  • ufunc       (universal function object)是一种对数组进行处理的特殊函数

ndarray

 1 import numpy as np
 2 a=np.array([1,2,3,4])
 3 b=np.array((5,6,7,8))
 4 c=np.array([[1,2,3,4],[4,5,6,7],[7,8,9,10]])
 5 print(a.shape)  #获取数组的形状,返回一个元组  (4,)
 6 print(c.shape)  # (3,4)
 7 c.shape=4,3  #通过shape属性可修改数组每个维度的长度
 8 print(c)
 9 c.shape=2,-1  #设置某个维度长度为-1,自动计算此维度的长度
10 print(c)

c=np.array([[1,2,3,4],[4,5,6,7],[7,8,9,10]])
print(c.dtype)  #获取数组元素类型  -->int32
af=np.array([1,2,3,4],dtype=float)  #通过dtype在创建数组时指定元素类型
print(af.dtype)  #  -->float64

numpy中typeDict字典保存所有数值类型

使用astype()方法对数组元素进行类型转换:

1 t1=np.array([1,2,3,4],dtype=np.float)
2 t2=t1.astype(np.int32)
3 print(t1.dtype) #-->float64
4 print(t2.dtype) #-->int32

自动创建数组

1 t1=np.arange(0,1,0.1) #使用arange()创建等差数组
2 print(t1)  # --> [ 0.   0.1  0.2  0.3  0.4  0.5  0.6  0.7  0.8  0.9]
3 t2=np.linspace(0,1,10) #指定开始值0,终值1和元素个数10创建等差数组
4 t3=np.linspace(0,1,10,endpoint=False)  #endpoint参数指定是否包含终值

t1=np.logspace(0,2,5) #创建等比数组,产品从10^0到10^2共5个元素
print(t1) # -->[   1.            3.16227766   10.           31.6227766   100.        ]

t=np.logspace(0,1,12,base=2,endpoint=False) #指定基数为2,不包含终值
print(t)
#[ 1.          1.05946309  1.12246205  1.18920712  1.25992105  1.33483985
#  1.41421356  1.49830708  1.58740105  1.68179283  1.78179744  1.88774863]

zeros(),ones(),empty()创建指定形状和类型的数组,其中empty()只分配数组所使用的内存,不对数组元素进行初始化操作。

1 t1=np.zeros(4,np.int)
2 print(t1)  #--> [0 0 0 0]
3 t2=np.full(4,np.pi)  #full()将数组元素初始化为指定的值
4 print(t2)  #--> [ 3.14159265  3.14159265  3.14159265  3.14159265]
5 s='abcdefgh'
6 t3=np.fromstring(s,dtype=np.int8)  #从字符串创建数组
7 print(t3)  #-->[ 97  98  99 100 101 102 103 104]

可通过fromfunction()创建数组,第一个参数为计算每个数组元素的函数,第二个参数指定数组的形状

def func2(i,j):return (i+1)*(j+1)t1=np.fromfunction(func2,(9,9))
print(t1)
# [[  1.   2.   3.   4.   5.   6.   7.   8.   9.]
#  [  2.   4.   6.   8.  10.  12.  14.  16.  18.]
#  [  3.   6.   9.  12.  15.  18.  21.  24.  27.]
#  [  4.   8.  12.  16.  20.  24.  28.  32.  36.]
#  [  5.  10.  15.  20.  25.  30.  35.  40.  45.]
#  [  6.  12.  18.  24.  30.  36.  42.  48.  54.]
#  [  7.  14.  21.  28.  35.  42.  49.  56.  63.]
#  [  8.  16.  24.  32.  40.  48.  56.  64.  72.]
#  [  9.  18.  27.  36.  45.  54.  63.  72.  81.]]

a=np.arange(10)
print(a) #[0 1 2 3 4 5 6 7 8 9]
print(a[2:-1:2])  #用切片获取数组一部分,step=2  -->[2 4 6 8]

与列表不同的是,通过切片获取的新的数组时原始数组的一个视图,它与原始数组共享同一块存储空间。

a=np.arange(10)
print(a) #[0 1 2 3 4 5 6 7 8 9]
b=a[3:7]
print(b)  #-->[3 4 5 6]
b[2]=-10
print(b)  #--> [  3   4 -10   6]
print(a) #-->[  0   1   2   3   4 -10   6   7   8   9]

使用整数列表对数组元素进行存取,将使用列表中的每个元素作为下标,得到的数组和原始数组不共享内存。

x=np.arange(10,1,-1)
print(x) #-->[10  9  8  7  6  5  4  3  2]
b=x[[3,3,-2,8]]
print(b)  #-->[7 7 3 2]
b[2]=100
print(b)  #-->[  7   7 100   2]
print(x)  #-->[[10  9  8  7  6  5  4  3  2]

NumPy使用元组作为下标:

二维数组

a=np.arange(0,60,10).reshape(-1,1)+np.arange(0,6)
print(a)
# [[ 0  1  2  3  4  5]
#  [10 11 12 13 14 15]
#  [20 21 22 23 24 25]
#  [30 31 32 33 34 35]
#  [40 41 42 43 44 45]
#  [50 51 52 53 54 55]]

在多维数组中,可以使用整数元组或者列表。整数数组和布尔数组,当下标使用这些对象时,所获得的数据是原始数据的副本,因此修改数组不会改变原始数组。

数组内存结构

ufunc函数

ufunc是一种能对数组的每一元素进行计算的函数,NumPy的许多ufunc函数都是用C语言实现的,因此它的计算速度非常快。

逻辑运算函数logical_and(),logical_or(),logical_not(),logical_xor()

位运算函数bitwise_and(),bitwise_not(),bitwise_or(),bitwise_xor()

自定义ufunc函数:

def triangle_wave(x,c,c0,hc):x=x-int(x) #三角波周期为1if x>=c:r=0.0elif x<c0:r=x/c0*hcelse:r=(c-x)/(c-c0)*hcreturn r#通过frompyfunc()将计算单个值的函数转换为能对数组每个元素进行计算的ufunc函数
triangle_ufunc1=np.frompyfunc(triangle_wave,4,1)
x=np.linspace(0,2,10)
y2=triangle_ufunc1(x,0.6,0.4,1.0)
print(y2.dtype)  #triangle_ufunc1()返回的数组元素类型为object
print(y2.astype(np.float).dtype) #使用astype()将元素类型转为float

使用vectorize()也可以实现frompyfunc()类似的功能,可通过otypes参数指定返回的数组的元素类型:

triangle_ufunc2=np.vectorize(triangle_wave,otypes=[np.float])
x=np.linspace(0,2,10)
y2=triangle_ufunc2(x,0.6,0.4,1.0)
print(y2)

广播

当使用ufunc函数对两个数组进行计算时,如果两个数组的shape不同,会进行广播处理。Numpy提供了ogrid对象,用于创建广播运算用的数组。

ogrid第三个参数为虚数时,它表示所返回的数组的长度。

x,y=np.ogrid[:1:4j,:1:3j]

转载于:https://www.cnblogs.com/larry-xia/p/9215520.html

NumPy数值计算库-1相关推荐

  1. python科学计算库-数值计算库与科学计算库

    BLAS 接口 BLAS , LAPACK , ATLAS 这些数值计算库的名字很类似,他们之间有什么关系呢?BLAS是一组线性代数运算接口,目前是事实上的标准,很多数值计算/科学计算都实现了这套接口 ...

  2. [转载] 机器学习篇—Numpy数值计算基础(中)

    参考链接: Python中的numpy.cbrt Numpy库是支持 Python 语言的数值计算第三方库,其拥有强大的多维数组处理与矩阵运算能力:是机器学习的必不可少的工具.本文是在学习了Numpy ...

  3. NumPy 数值计算基础

    NumPy 数值计算基础 介绍 如果你使用 Python 语言进行科学计算,那么一定会接触到 NumPy.NumPy 是支持 Python 语言的数值计算扩充库,其拥有强大的多维数组处理与矩阵运算能力 ...

  4. Python数据分析——NumPy数值计算基础(二)

    Python数据分析--NumPy数值计算基础(二) 思维导图: 数据的csv文件存取 csv(Comma-Separated Value,逗号分隔值)文件:是一种常见的文件格式,用来存储批量数据. ...

  5. 使用数值计算库Zero - VC6调用失败、cfree调用成功

    Zero是一个功能丰富的C++数值计算库,具有复数.向量.矩阵等类,具备求根,拟合,插值,积分,随机数,统计,全局和局部的约束以及无约束优化,常微分方程求解等多项功能. 先下载一份Zero:看一下,有 ...

  6. NumPy 矩阵库(Matrix)

    NumPy 矩阵库(Matrix) NumPy 中包含了一个矩阵库 numpy.matlib,该模块中的函数返回的是一个矩阵,而不是 ndarray 对象. 一个 的矩阵是一个由行(row)列(col ...

  7. python3.7安装numpy库_python2.7/3.7安装NumPy函数库的一种方法及小心得

    前提:python2.7以及对应的pip(python包管理工具,32/64位)已在win7上安装(安装地址:d:\python27). 在python官网上下载对应版本的NumPy函数库,下载到:d ...

  8. 数据科学与python语言实验——NumPy数值计算基础

    NumPy数值计算基础 实验数据: 链接:https://pan.baidu.com/s/1-E2ShVTdI0X5lwDtMLFFsQ 提取码:0929 代码实现: 之前不会的地方: 1.读取文件 ...

  9. Python中numpy.linalg库常用函数

    Python中numpy.linalg库常用函数 numpy.linalg Python中numpy.linalg库常用函数 简单记录所遇到的numpy库内置函数 矩阵与向量积 ①np.linalg. ...

最新文章

  1. Symantec Endpoint - quarantine
  2. 关于hive中.conf配置文档中sink为avro的端口问题
  3. TCP/IP原理 (一)
  4. spark提交应用的全流程分析
  5. 如何锁定 Visual SourceSafe 数据库(转载)
  6. 如何处理使用ngrx时遇到的错误消息: NullInjectorError R3InjectorError(AppModule)[StoreFeatureModule]
  7. Android功耗(8)---Camera功耗分析和拆解
  8. php 动态图表,excel实现动态图表的3种方法是什么
  9. POJ 3422 【最大费用】.cpp
  10. gvim设置字体和隐藏菜单栏工具栏
  11. UltraEdit v17.10.0,注册机,注册码
  12. python中unicode编码表_python中的unicode编码
  13. 国家科技管理信息系统构建及其对科技情报工作的影响
  14. 苹果手机屏幕镜像_苹果手机还能一键投屏?点一下小屏变大屏幕,看剧是真畅快...
  15. HTML特效代码大全(史上最全)
  16. 2022-04-24_数组的定义和初始化
  17. Arduino DIY 电子自动浇花浇水系统
  18. ubuntu下载todesk安装包
  19. smallworld 下的magik module 的logger和service provider
  20. 来自西安火车站旁一小面馆的管理启示

热门文章

  1. 组态软件运行在云服务器_能在云服务器上运行软件吗
  2. 什么是利用计算机化的知识进行自动推理,基于实例模型的知识推理及其在自动阅卷系统中的应用...
  3. textaligncenter仍然不居中_5个word你不知道的功能
  4. H3C三层交换机划分VLAN示例
  5. 【Elasticsearch】如何使用 Elasticsearch 6.2 搜索中文、日语和韩语文本 - 第 3 部分:语言检测工具
  6. 【Elasticsearch】实用BM25 -第2部分:BM25算法及其变量
  7. 【IDEA】idea es 报错 Cause: invalid type code: 2D
  8. Mac终端:pip command not found
  9. 一个多线程练习,为什么直接运行和debug结果不一样
  10. eclipse中查怎样看某个方法调用了谁