# -*- coding: utf-8 -*-
import numpy as np
#----------------------------------------
#-- 定义 ndarray
#-- 先申明为python的序列,再转化为numpy的数组
#---------------------------------------- ada = np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]]) #获得数组大小
print ada.shape #设置数组大小
ada.shape = 4,3 #当某个轴的元素为-1时,将根据数组元素的个数自动计算此轴的长度
ada.shape = 3,-1 #使用数组的reshape方法,可以创建一个改变了尺寸的新数组,原数组的shape保持不变
ada2 = ada.reshape((2,-1)) #数组ada和ada2其实共享数据存储内存区域,因此修改其中任意一个数组的元素都会同时修改另外一个数组的内容:
ada[2,1] = 100
print ada,ada2 #数组的元素类型可以通过dtype属性获得
np.array([[1, 2, 3, 4],[4, 5, 6, 7], [7, 8, 9, 10]], dtype=np.float) #----------------------------------------
#-- 定义 ndarray
#-- 采用NumPy提供了很多专门用来创建数组
#---------------------------------------- #arange函数类似于python的range函数,通过指定开始值、终值和步长来创建一维数组,注意数组不包括终值:
np.arange(0,1,0.1) #linspace函数通过指定开始值、终值和元素个数来创建一维数组,可以通过endpoint关键字指定是否包括终值,缺省设置是包括终值:
np.linspace(0, 1, 12) #logspace函数和linspace类似,不过它创建等比数列,下面的例子产生1(10^0)到100(10^2)、有20个元素的等比数列:
np.logspace(0, 2, 20) #使用frombuffer, fromstring, fromfile等函数可以从字节序列创建数组
s = "abcdefgh"
np.fromstring(s, dtype=np.int8)
np.fromstring(s, dtype=np.int16) #fromfunction函数的第一个参数为计算每个数组元素的函数,第二个参数为数组的大小(shape),因为它支持多维数组,所以第二个参数必须是一个序列
def func(i):
return i%4+1
np.fromfunction(func, (10,)) #创建一个二维数组表示九九乘法表
def func2(i, j):
return (i+1) * (j+1)
a = np.fromfunction(func2, (9,9)) #----------------------------------------
#-- 使用下标范围
#-- 通过下标范围获取的新的数组是原始数组的一个视图。它与原始数组共享同一块数据空间:
#---------------------------------------- b = a[3:7] # 通过下标范围产生一个新的数组b,b和a共享同一块数据空间
b[2] = -10 # 将b的第2个元素修改为-10
a # a的第5个元素也被修改为10 #----------------------------------------
#-- 使用整数序列
#-- 当使用整数序列对数组元素进行存取时,将使用整数序列中的每个元素作为下标,整数序列可以是列表或者数组。
#-- 使用整数序列作为下标获得的数组不和原始数组共享数据空间。
#----------------------------------------
x = np.arange(10,1,-1)
x[[3, 3, 1, 8]] # 获取x中的下标为3, 3, 1, 8的4个元素,组成一个新的数组
b = x[np.array([3,3,-3,8])] #下标可以是负数
x[[3,5,1]] = -1, -2, -3 # 整数序列下标也可以用来修改元素的值 #----------------------------------------
#-- 使用布尔数组
#-- 当使用布尔数组b作为下标存取数组x中的元素时,将收集数组x中所有在数组b中对应下标为True的元素。
#-- 使用布尔数组作为下标获得的数组不和原始数组共享数据空间,注意这种方式只对应于布尔数组,不能使用布尔列表。
#----------------------------------------
x = np.arange(5,0,-1) # 布尔数组中下标为0,2的元素为True,因此获取x中下标为0,2的元素
x[np.array([True, False, True, False, False])] # 如果是布尔列表,则把True当作1, False当作0,按照整数序列方式获取x中的元素
x[[True, False, True, False, False]] # 布尔数组的长度不够时,不够的部分都当作False
x[np.array([True, False, True, True])] # 布尔数组下标也可以用来修改元素
x[np.array([True, False, True, True])] = -1, -2, -3 # 产生一个长度为10,元素值为0-1的随机数的数组
x = np.random.rand(10) # 数组x中的每个元素和0.5进行大小比较,得到一个布尔数组,True表示x中对应的值大于0.5
x>0.5 # 使用x>0.5返回的布尔数组收集x中的元素,因此得到的结果是x中所有大于0.5的元素的数组
x[x>0.5] #----------------------------------------
#-- 多维数组
#-- 多维数组的存取和一维数组类似,因为多维数组有多个轴,因此它的下标需要用多个值来表示,
#-- NumPy采用组元(tuple)作为数组的下标
#----------------------------------------
#多维数组同样也可以使用整数序列和布尔数组进行存取。 #----------------------------------------
#-- ufunc
#-- ufunc是universal function的缩写,它是一种能对数组的每个元素进行操作的函数。
#---------------------------------------- #linspace产生一个从0到2*PI的等距离的10个数
x = np.linspace(0, 2*np.pi, 10)
y = np.sin(x) #np.sin是一个ufunc函数,因此它对x中的每个元素求正弦值,然后将结果返回,并且赋值给y #如果我们希望将sin函数所计算的结果直接覆盖到数组x上去的话,可以将要被覆盖的数组作为第二个参数传递给ufunc函数.
t = np.sin(x,x) #add函数就是一个最常用的
a = np.arange(0,4)
b = np.arange(1,5)
np.add(a,b) #add函数返回一个新的数组,此数组的每个元素都为两个参数数组的对应元素之和。
#它接受第3个参数指定计算结果所要写入的数组,如果指定的话,add函数就不再产生新的数组。
np.add(a,b,a) #----------------------------------------
#-- ufunc
# y = x1 + x2: add(x1, x2 [, y])
# y = x1 - x2: subtract(x1, x2 [, y])
# y = x1 * x2: multiply (x1, x2 [, y])
# y = x1 / x2: divide(x1, x2 [, y]), 如果两个数组的元素为整数,那么用整数除法
# y = x1 / x2: true divide (x1, x2 [, y]), 总是返回精确的商
# y = x1 // x2: floor divide (x1, x2 [, y]), 总是对返回值取整
# y = -x: negative(x [,y])
# y = x1**x2: power(x1, x2 [, y])
# y = x1 % x2: remainder(x1, x2 [, y]), mod(x1, x2, [, y])
#注意
#要运算的数组很大的话,会因为产生大量的中间结果而降低程序的运算效率。例如:假设a b c三个数组采用算式x=a*b+c计算
#t = a * b
#x = t + c
#del t
#分解的好处以减少一次内存分配。
#----------------------------------------

建议10:numpy使用基础的更多相关文章

  1. numpy的基础运算2-【老鱼学numpy】

    numpy的基础运算中还有很多运算,我们这里再记录一些. 最小/大值索引 前面一篇博文中我们讲述过如何获得数组中的最小值,这里我们获得最小/大值的索引值,也就是这个最小/大值在整个数组中位于第几位. ...

  2. 1.2 NumPy数组基础

    目录 第一章 numpy入门 1.2 numpy数组基础 1.2.1 数组的属性 1.2.2 数组的索引:获取单个元素 1.2.3 数组切片:获取子数组 1.2.4 数组的变形 1.2.5 数组的拼接 ...

  3. 读改善c#代码157个建议:建议10~12

    目录: 建议10:创建对象时需要考虑是否实现比较器 建议11:区别对待==与Equals 建议12:重写Equals时也要重写GetHashCode 一.建议10:创建对象时需要考虑是否实现比较器 比 ...

  4. 背水一战 Windows 10 (78) - 自定义控件: 基础知识, 依赖属性, 附加属性

    [源码下载] 背水一战 Windows 10 (78) - 自定义控件: 基础知识, 依赖属性, 附加属性 作者:webabcd 介绍背水一战 Windows 10 之 控件(自定义控件) 自定义控件 ...

  5. Python Numpy shape 基础用法(转自他人的博客,如涉及到侵权,请联系我)

    Python Numpy shape 基础用法 shape函数是numpy.core.fromnumeric中的函数,它的功能是读取矩阵的长度,比如shape[0]就是读取矩阵第一维度的长度.它的输入 ...

  6. (3.10)mysql基础深入——mysqld 服务器与客户端连接过程 源码分析【待写】

    (3.10)mysql基础深入——mysqld 服务器与客户端连接过程 源码分析[待写]

  7. 初学Direct X(10)—— D3D基础预备知识

    初学Direct X(10) -- D3D基础预备知识 1. 像素格式 D3DFMT_X8R8G8B8(F) X:未加使用 8:8位用于显示 B:用于显示蓝色 F:浮点像素类型 以下三个较为常用,使用 ...

  8. 编写高质量代码改善C#程序的157个建议——建议10: 创建对象时需要考虑是否实现比较器

    建议10: 创建对象时需要考虑是否实现比较器 有对象的地方就会存在比较,在.NET的世界中也一样.举个最简单的例子,在UI中,有一个10个人的Salary列表.根据排序的需要,列表要支持针对基本工资来 ...

  9. (转)python资料汇总(建议收藏)零基础必看

    摘要:没料到在悟空问答的回答大受欢迎,为方便朋友,重新整理汇总,内容包括长期必备.入门教程.练手项目.学习视频. 一.长期必备. 1. StackOverflow,是疑难解答.bug排除必备网站,任何 ...

  10. 【笔记】numpy.array基础(1)

    numpy.array基础 使用numpy.__version__可以检查numpy的版本 当然也可以直接使用命令行检查numpy版本 也可以用来简化引用,使用as python list特点 num ...

随机推荐

  1. JS方法代理

    作者:Jiang, Jilin JS作为一门脚本语言.十分easy上手.外加其灵活性,能够轻而易举地扩展功能.今天,我们就聊聊JS的方法代理. 方法代理是脚本语言中常见的方法扩展形式.这样的灵活的形式 ...

  2. js获取object类型所有的键值对

    万物皆对象,而对象完全可以用键值对来表示,所以,在js中,也是通过键值对来表示对象的,在开发中,我在修改的时候,知道属性值可以直接用点.符号来获取值,但是写common.js的时候,发现这个属性名称是 ...

  3. js模板引擎artTemplate快速上手

    腾讯的artTemplate 1,编写模板 (采用script标签并带有属性id和type="text/html") <script id="test" ...

  4. 我的第二个java程序 循环

    public class Test {//类 public Test (int num){//构造方法,和类同名,无返回值,接收传参并定义传参的类型,大小写敏感 int x = 10;//局部变量,定 ...

  5. linux 分区格式查看

    Linux分区格式查看 两个文件 /etc/fstab 和/etc/mtab /etc/fstab是用来存放文件系统的静态信息的文件,当系统启动的时候. 系统会自动地从这个文件读取信息,并且会自动将此 ...

  6. 转载: vim使用技巧

    两篇很牛的vim使用技巧   来源: ChinaUnix博客 日期: 2009.07.06 10:18 (共有条评论) 我要评论   读本文之前请注意:1. 本文的目标是提供一些vim的使用技巧,利用 ...

  7. OpenCV学习笔记四:ImgProc模块

    一,简介 这个模块包含一系列的常用图像处理算法. 二,分析 此模块包含的文件如下图: 其导出算法包括如下: /*********************** Background statistics ...

  8. 那些可爱的 Linux 命令

    环境 root@15b883:~# uname -a ##需要是Ubuntu环境 Linux 15b883 --generic #- :: UTC x86_64 x86_64 x86_64 GNU/L ...

  9. CentOS6.8部署SVN

    第1章 安装svn服务 1.1 准备操作系统并查看系统环境 [root@localhost ~]# cat /etc/redhat-release CentOS release 6.8 (Final) ...

  10. 自定义表单验证--jquery validator addMethod的使用

    原文地址:jquery validator addMethod 方法的使用作者:蜡笔小玄 jQuery.validate是一款非常不错的表单验证工具,简单易上手,而且能达到很好的体验效果,虽然说在项目 ...