# -*- 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. C#通过修改注册表改变IE默认选项

    修改注册表,这个代码好实现,关键是怎么找到对应的注册表值,也就是说画一条线很容易,难的是找到要在哪里画,然后我百度了一圈,出来的都是画线的,没有指出或者指出的不全的注册表对应值,只能FQ谷歌了,也就有 ...

  2. OpenCV中Kinect的使用(3)

    接OpenCV中Kinect的使用(2),下面内容主要讲述使用OpenNI 控制Kinect 的马达,实现摄像头的上下摆动. 下面是透过OpenNI比较低阶的USB控制介面(XnUSB.h),来做到马 ...

  3. 第一百九十节,jQuery,编辑器插件

    jQuery,编辑器插件 学习要点: 1.编辑器简介 2.引入 uEditor 编辑器(Editor),一般用于类似于 word 一样的文本编辑器,只不过是编辑为 HTML 格式的.分类纯 JS 类型 ...

  4. python 模块中__all__作用

    test.py文件开头写上__all__=[func1,func2] 当其他文件导入  from test import * 只会导出"[func1,func2]"里面的,其他调用 ...

  5. flex datagrid itemrender wordwrap失效

    现在我是想把datagrid中的部分字体变个颜色. 但是重写set data函数后发现原先的wordwrap自动换行不好使了. 于是就在谷歌上找问题.. 参考了两篇: http://stackover ...

  6. iOS 创建多个button实现点击改变背景颜色

    工程中需要实现与UISegmentedControl效果相似的一排一共十个button,如下图.但是SegmentedControl修改不太方便,就用button替代, 循环创建十个button,点击 ...

  7. 第二章----python基础

    概要:python是一种计算机编程语言,有自己的一套语法,编译器或者解释器负责把符合语法的程序代码翻译成CPU能识别的机器码,然后执行.python使用缩进来组织代码块,Python程序中大小写是敏感 ...

  8. 高性能图片服务器–ZIMG(转)

    2011年李彦宏在百度联盟峰会上就提到过互联网的读图时代已经到来1,图片服务早已成为一个互联网应用中占比很大的部分,对图片的处理能力也相应地变成企业和开发者的一项基本技能.需要处理海量图片的典型应用有 ...

  9. Android 版本更新升级

    推荐一款很好的版本升级开源框架: https://github.com/WVector/AppUpdate 个人地址:总结https://gitee.com/anan9303/AppVersionUp ...

  10. StringUtils 时间显示,判断手机号,电子邮件,是否为今日,是否空白串,字符串转整数,对象转整数 等

    package com.xiaoyun.org.util; import java.io.BufferedReader; import java.io.IOException; import java ...