# -*- coding: utf-8 -*-
"""
Created on Tue Aug 09 23:04:51 2016@author: Administrator
"""import numpy as np'''python中的list是python的内置数据类型,list中的数据类不必相同的,而array的中的类型必须全部相同。在list中的数据类型保存的是数据的存放的地址,简单的说就是指针,并非数据,这样保存一个list就太麻烦了,例如list1=[1,2,3,'a']需要4个指针和四个数据,增加了存储和消耗cpu。numpy中封装的array有很强大的功能,里面存放的都是相同的数据类型
'''
#模块1 array list 基本展示
list1=[1,2,3,'a']
print list1  a=np.array([1,2,3,4,5])
b=np.array([[1,2,3],[4,5,6]])
c=list(a)   # array到list的转换
print a,np.shape(a)
print b,np.shape(b)
print c,np.shape(c)  '''
[1, 2, 3, 'a']
[1 2 3 4 5] (5L,)
[[1 2 3][4 5 6]] (2L, 3L)
[1, 2, 3, 4, 5] (5L,)
''''''
whos
Variable   Type       Data/Info
-------------------------------
a          ndarray    5L: 5 elems, type `int32`, 20 bytes
b          ndarray    2Lx3L: 6 elems, type `int32`, 24 bytes
c          list       n=5
list1      list       n=4
np         module     <module 'numpy' from 'C:\<...>ages\numpy\__init__.pyc'>
'''#模块2
#创建:array的创建:参数既可以是list,也可以是元组.使用对应的属性shape直接得到形状
print '222222222222222222222222222222222222222222\n'
a=np.array((1,2,3,4,5))# 参数是元组
b=np.array([6,7,8,9,0])# 参数是list
c=np.array([[1,2,3],[4,5,6]])# 参数二维数组
print a,b
print c.shape
#[1 2 3 4 5] [6 7 8 9 0] (2L, 3L) #print a,b,
#[1 2 3 4 5] [6 7 8 9 0]
#(2L, 3L) 注意:print 后面加上 \n 换行;注意:print a,b b后面没有,换行了,如果有,不换行#模块3 也可以直接改变属性array的形状,-1代表的是自己推算
print '33333333333333333333333333333333333333333333\n'
c = np.array([[1, 2, 3, 4],[4, 5, 6, 7], [7, 8, 9, 10]])
print c.shape # (3L, 4L)
c.shape=4,-1
print c
c.reshape(2,-1)
print c
print 'reshape产生新的变量'
x = c.reshape(2,-1)
print x
'''
33333333333333333333333333333333333333333333(3L, 4L)
[[ 1  2  3][ 4  4  5][ 6  7  7][ 8  9 10]]
[[ 1  2  3][ 4  4  5][ 6  7  7][ 8  9 10]]
reshape产生新的变量
[[ 1  2  3  4  4  5][ 6  7  7  8  9 10]]
'''
'''
里的reshape最终相当于是一个浅拷贝,也就是说还是和原来的书c使用相同的内存空间
'''
x[0]=1000
print x
print c
'''
33333333333333333333333333333333333333333333(3L, 4L)
[[ 1  2  3][ 4  4  5][ 6  7  7][ 8  9 10]]
[[ 1  2  3][ 4  4  5][ 6  7  7][ 8  9 10]]
reshape产生新的变量
[[ 1  2  3  4  4  5][ 6  7  7  8  9 10]]
[[1000 1000 1000 1000 1000 1000][   6    7    7    8    9   10]]
[[1000 1000 1000][1000 1000 1000][   6    7    7][   8    9   10]]
'''#模块4 前面在创建数组的时候并没有使用数据类型,这里我们也可以使用数据类型。默认的是int32.
a1=np.array([[1,2,3],[4,5,6]],dtype=np.float64)
print a1.dtype,a.dtype
#float64 int32#模块5 前面在创建的时候我们都是使用的np.array()方法从tuple或者list转换成为array,感觉很是费劲,numpy自己提供了很多的方法让我们自己直接创建一个array.
arr1=np.arange(1,10,1)
arr2=np.linspace(1,10,10)
print arr1,arr1.dtype
print arr2,arr2.dtype
'''
[1 2 3 4 5 6 7 8 9] int32
[  1.   2.   3.   4.   5.   6.   7.   8.   9.  10.] float64
np.arange(a,b,c)表示产生从a-b不包括b,间隔为c的一个array,数据类型默认是int32。但是linspace(a,b,c)表示的是把a-b平均分成c分,它包括b。
'''#模块6  有时候我们需要对于每一个元素的坐标进行赋予不同的数值,可以使用fromfunction函数
print '666666666666666666\n'
def fun(i):  return i%4+2
print np.fromfunction(fun,(10,)) #[ 2.  3.  4.  5.  2.  3.  4.  5.  2.  3.]
def fun2(i,j):return (i+1)*(j+1)
print np.fromfunction(fun2,(9,9))  '''
虽然说,这里提供了很多的直接产生array的方式,但是大部分情况我们都是会从list进行转换,因为在实际的处理中,我们需要从txt加载文件,那样直接读入的数据显示存放到list中,
需要处理的时候我们转换到array,因为array的设计更加符合我们的使用,涉及到矩阵的运算在使用mat,那么list主要就是用进行元素的索取。
'''
def loaddataSet(fileName):    file=open(fileName)    dataMat=[] for line in file.readlines():    curLine=line.strip().split('\t')    floatLine=map(float,curLine) #这里使用的是map函数直接把数据转化成为float类型
        dataMat.append(floatLine)    return dataMat   #上面的返回最终的数据就是最初的list数据集,再根据不同的处理需求是转化到array还是mat。其实array是mat的父类,能用mat的地方,array理论上都能传入。#模块7 元素访问:
arr = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
print '77777777777777777'
'''一维数组方法   arr[5] #5  arr[3:5] #array([3, 4])  arr[:5] #array([0, 1, 2, 3, 4])  arr[:-1]# array([0, 1, 2, 3, 4, 5, 6, 7, 8])  arr[:] #array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])  arr[2:4]=100 # array([  0,   1, 100, 100,   4,   5,   6,   7,   8,   9])  arr[1:-1:2] #array([  1, 100,   5,   7]) 2 是间隔  arr[::-1] #array([  9,   8,   7,   6,   5,   4, 100, 100,   1,   0])   arr[5:2:-1]# -1的间隔表示从右向左所以5>2  #array([  5,   4, 100])
'''#我们再来看看二维的处理方式
c = np.array([[1, 2, 3, 4],[4, 5, 6, 7], [7, 8, 9, 10]])
print c[1]
print c[1:2]
print c[1][2]
print c[1:4]
print c[1:4][0][2] '''
[4 5 6 7]
[[4 5 6 7]]
6
[[ 4  5  6  7][ 7  8  9 10]]
6
可以看出对于有:的表达最终的结果外面还嵌套一层list的[],。访问的一定要注意,python最bug的就是,语法
灵活,不管怎样写索引语法都是正确的,但是最终的书结果却让你大跌眼镜。
还有array的索引最终产生的是一个一个原始数据的浅拷贝,还和原来的数据共用一块儿内存
'''
b=arr[1:6]
b[:3]=0
print b#产生上面的原因是因为array中直接存放的数据,拷贝的话直接拿走的是pointer,没有取走数据,但是list却会直接发生深拷贝,数据指针全部带
list1=list(c)
list1[1]=0
print list1  #上面修改的0并没有被改变
print c
#[array([1, 2, 3, 4]), 0, array([ 7,  8,  9, 10])]#模块8 '''
除了这些之外还有自己的更加牛掰的方式(只能用array)
1)使用布尔数组.感觉甚是强大,就不要自己写什么判断语句啦,注意这种方式得到结果不和原始数组共享空间。
布尔索引仅仅适用于数组array,list没资格用。布尔索引最终得到下标索引为true的数据。索引只能是布尔数组
'''
print '888888888888\n'
a=np.array((1,2,3,4,5))# 参数是元组
a=np.array(a*2)
print a[a>5] #[ 6  8 10]
print a>5 # [False False  True  True  True]#列表索引可以是数组和list。返回的数据不和原来的数据共享内存。索引可以是list和array
x=np.arange(10)
index=[1,2,3,4,5]
arr_index=np.array(index)
print x
print x[index]  # list索引
print x[arr_index]  # array索引 print '8-1'
a=np.arange(10)
lista=list(a)
print a*2
print lista*2     #大跌眼镜,数组和list的乘积很吓人'''
[ 0  2  4  6  8 10 12 14 16 18]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
'''#模块9 array的广播
print '9\n'
a = np.arange(0, 60, 10).reshape(-1, 1)
b = np.arange(0, 5)
print a
print b
print np.add(a,b)

转载于:https://www.cnblogs.com/qqhfeng/p/5755162.html

list array解析(总算清楚一点了)相关推荐

  1. 解析稍微复杂一点的数据

    碰到如上图所示的数据需要我们解析,用"name"的值作为分区头标题,用上图所圈起来的字典作为一个model,我们可以用两种方式解析: 第一种方式:就是使用一个数组和一个字典,数组用 ...

  2. ExtJS EditorGridPanel 示例之Array格式(自定义Array解析器)Store前后台增删改查

    本示例入口html页面: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http: ...

  3. php怎样解析数组,PHP 数组 Array 解析

    官方介绍 PHP 数组实际上是一个有序的映射(map),映射是一种把多个值(values)关联到对应的多个键(keys)的类型.这种映射类型在很多方面做了优化,因此可以把它当成真正的数组(就是上面说的 ...

  4. java webservice wsimport 无法将名称 'soapenc:Array' 解析为 'type definition' 组件 时对应的解决方法...

    (一):代码如下: package com.enso.uploaddata;import org.apache.axis.client.Call; import org.apache.axis.cli ...

  5. 使用JSONObject生成和解析json

    使用JSONObject生成和解析json 1. json数据类型 类型 描述 Number 数字型 String 字符串型 Boolean 布尔型 Array 数组 Object 对象 null 空 ...

  6. JSON解析与XML解析的区别

    JSON与XML的区别比较 1.定义介绍 (1).XML定义 扩展标记语言 (Extensible Markup Language, XML) ,用于标记电子文件使其具有结构性的标记语言,可以用来标记 ...

  7. iOS - XML 数据解析

    前言 @interface NSXMLParser : NSObjectpublic class NSXMLParser : NSObject 1.XML 数据 XML(Extensible Mark ...

  8. js解析json字符串数组

    json解析字符串数据 例如如下: var array= [ {}, {}, { [ {}, {}, {}, ] } ] 解析json数组 一般是$.each(array,function(i,val ...

  9. php xml expat,PHP Expat :XML的解析器

    本文中,我将讨论任何用PHP内建的Expat解析器来处理XML文档.通过范例,我将演示Expat的处理方法.同时,范例可以告诉你如何: 建立你自己的处理函数 将XML文档转换成你自己的PHP数据结构 ...

最新文章

  1. Android系统手机端抓包方法
  2. 苹果原壁纸高清_苹果壁纸 | 高清图片全面屏壁纸
  3. 密码学笔记——zip明文攻击
  4. (六)jQuery选择器
  5. leetcode1442. 形成两个异或相等数组的三元组数目
  6. linux进程管理 ps,Linux - 进程管理,ps与top
  7. 清华大学计算机系网络课程视屏,清华大学计算机系网络课程
  8. 微型计算机控制系统一般结构框图,微型计算机控制系统的组成-精品文档.ppt
  9. 全球与中国乳制品替代杏仁制品市场深度研究分析报告
  10. c语言编程八卦方位,易经手掌八卦图,如何C语言编程画一个彩色的周易八卦图...
  11. thread-specific stroage模式 一个线程一个储物柜
  12. ICLR2020国际会议精彩演讲抢先看(含源码)!!
  13. Java--mysql 的数据类型对照(映射)表
  14. java 数字转化为汉字_工具类_java 数字转化为汉字大写
  15. 自定义通信协议设计之TLV编码应用
  16. 金立生命倒计时:破产清算官网无法打开,创始人被曝赌博输十亿不知所踪
  17. 1970-2017年各国金融开放度指数 Chinn-Itoindex (KAOPEN)
  18. 嵌入式Linux根文件系统制作
  19. might和could的区别用法_综合能力_谁知道Can、Could、May和Might的区别__沪江网
  20. 光机电一体化高速分拣实训系统

热门文章

  1. 浅析phpwind9.0之登陆机制
  2. 毕业设计之路(2)——初识TCP
  3. 关于 运行root.sh 时出错误Timed out waiting for the CRS stack to start.的解决
  4. android xml: xliff:g
  5. android studio import android-source-code
  6. Android Bundle--ArrayMap详解
  7. 解决 from torch._C import *ImportError: DLL load failed: 找不到指定的程序。
  8. Git多人协作工作流程
  9. D. Imbalanced Array
  10. 搭建一个自己的SVN服务器