python怎么操作python 多维数组 合并元素

python数组的使用_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
python数组的使用
上传于||暂无简介
阅读已结束,如果下载本文需要使用0下载券
想免费下载更多文档?
下载文档到电脑,查找使用更方便
还剩2页未读,继续阅读
你可能喜欢帐号:密码:下次自动登录{url:/nForum/slist.json?uid=guest&root=list-section}{url:/nForum/nlist.json?uid=guest&root=list-section}
贴数:5&分页:西铁宏发信人: citihome (西铁宏), 信区: Python
标&&题: cython编写: 访问二维数组元素
发信站: 水木社区 (Fri Jul 29 21:33:54 2016), 转信 && 纯numpy实现的logistic回归算法,由于存在循环,数据剥离,效率不过。所以将之用基于blas的c程序书写(最后用cython进行封装),但在这个实践过程中存在几个问题:
numpy二维数组如何处理?
假定二维数组为x, 那么通过numpy.PyArray_DATA(x)得到的到底是存放x信息的整个连续块区域(后续二元数组的访问可以以"i*x.shape[1]+j"这种方式进行),还是地址数组的地址(C语言中二维地址的组织方式,对于一个二维数组名,其本质上是一个地址数组的首地址, 这个数组的每个元素存放第二个维度数组的首地址)?
似乎两种都有可能. 我将之当成第一种情形处理, 拷贝数据没有出错.但是在另外一个程序中发生了越界错误.
-- && ※ 来源:·水木社区 ·[FROM: 60.191.2.*]
老鱼发信人: hgoldfish (老鱼), 信区: Python
标&&题: Re: cython编写: 访问二维数组元素
发信站: 水木社区 (Sat Jul 30 00:46:35 2016), 转信 && numpy.PyArray_DATA() 返回`void*`类型的指针可以用`p[i*x.shape(1)+j]`这样子访问?先转了`int*`? && 不知道n*m是存储n个指针指向每个m长度的array,还是把所有标量都放在一起保存。有答案了分享一下。 && 【 在 citihome (西铁宏) 的大作中提到: 】
: 纯numpy实现的logistic回归算法,由于存在循环,数据剥离,效率不过。所以将之用基于blas的c程序书写(最后用cython进行封装),但在这个实践过程中存在几个问题:
: numpy二维数组如何处理?
: 假定二维数组为x, 那么通过numpy.PyArray_DATA(x)得到的到底是存放x信息的整个连续块区域(后续二元数组的访问可以以"i*x.shape[1]+j"这种方式进行),还是地址数组的地址(C语言中二维地址的组织方式,对于一个二维数组名,其本质上是一个地址数组的首地址, 这个数组的每个
: ...................
灭绝人性啊 &&&& ※ 来源:·水木社区 newsmth.net·[FROM: 211.162.33.*]
西铁宏发信人: citihome (西铁宏), 信区: Python
标&&题: Re: cython编写: 访问二维数组元素
发信站: 水木社区 (Sat Jul 30 01:08:47 2016), 转信 && 这个是我的疑问,在stackoverflow上找到的答案是对应一个区域,可以像一维数组那样访问。前提是首先用numpy.ascontiguousarray保证连续。可能我程序崩溃的原因就在于没有执行这个操作。
【 在 hgoldfish 的大作中提到: 】
: numpy.PyArray_DATA() 返回`void*`类型的指针可以用`p[i*x.shape(1)+j]`这样子访问?先转了`int*`?
: 不知道n*m是存储n个指针指向每个m长度的array,还是把所有标量都放在一起保存。有答案了分享一下。
-- && ※ 来源:·水木社区 ·[FROM: 183.157.162.*]
老鱼发信人: hgoldfish (老鱼), 信区: Python
标&&题: Re: cython编写: 访问二维数组元素
发信站: 水木社区 (Sat Jul 30 01:12:13 2016), 转信 && 感觉直接看源代码吧。可以预计这部分源代码应该不会很复杂,因为数组的数据结构实在太简单了。 && 【 在 citihome (西铁宏) 的大作中提到: 】
: 这个是我的疑问,在stackoverflow上找到的答案是对应一个区域,可以像一维数组那样访问。前提是首先用numpy.ascontiguousarray保证连续。可能我程序崩溃的原因就在于没有执行这个操作。
灭绝人性啊 &&&& ※ 来源:·水木社区 newsmth.net·[FROM: 211.162.33.*]
西铁宏发信人: citihome (西铁宏), 信区: Python
标&&题: Re: cython编写: 访问二维数组元素
发信站: 水木社区 (Sat Jul 30 06:57:29 2016), 转信 && 好,去实验室试试
【 在 hgoldfish 的大作中提到: 】
: 感觉直接看源代码吧。可以预计这部分源代码应该不会很复杂,因为数组的数据结构实在太简单了。
-- && ※ 来源:·水木社区 ·[FROM: 183.157.162.*]
文章数:5&分页:
抽奖到手软!将狂欢进行到底!水木-Python的自由天空-如何提取二维数组的某些特定列
主题文章列表
一共 25 篇
如何提取二维数组的某些特定列
发信人:&tex&(TeX&&&LaTeX),&信区:&Python
标&&题:&如何提取二维数组的某些特定列
发信站:&水木社区&(Sat&Feb&12&23:38:54&2011),&转信
新手,只用用来做些简单数据处理,然后用其它软件画图。问题可能比较傻
先是读取一个有28列数据的文件,读入后用split()&分成了一个&若干行,28列的二维数组&(list&of&list),但是我只需要其中某些特定的列,不规律的&(比如&1,&3,4,&5,&16和17列)。不知道该如何简单的实现,直接&data[:][0,2,3]&这样不行
不能用&numpy&因为有些列不是数字
Key&Words:&FEM,&LES,&Parallel&Programming,&Multiblock,&Domain&Decompostion
&&&&&&&&&&&Atmospheric&Boundary&Layer,&Street&Canyon
&&&&&&&&&&&Turbulent&diffusion,&dispersion,&Passive&scalar&transport
※&修改:·tex&于&Feb&12&23:40:53&2011&修改本文·[FROM:&137.132.29.*]
※&来源:·水木社区&newsmth.net·[FROM:&137.132.29.*]
Re: 如何提取二维数组的某些特定列
发信人:&easy&(Easy&Company),&信区:&Python
标&&题:&Re:&如何提取二维数组的某些特定列
发信站:&水木社区&(Sat&Feb&12&23:44:22&2011),&站内
In&[1]:&from&operator&import&itemgetter
In&[2]:&a&=&[[0,&1,&2,&3,&4],&['a',&'b',&'c',&'d',&'e']]
In&[3]:&[itemgetter(1,&3,&4)(i)&for&i&in&a]
Out[3]:&[(1,&3,&4),&('b',&'d',&'e')]
【&在&tex&(TeX&&&LaTeX)&的大作中提到:&】
:&标&&题:&如何提取二维数组的某些特定列
:&发信站:&水木社区&(Sat&Feb&12&23:38:54&2011),&转信
:&新手,只用用来做些简单数据处理,然后用其它软件画图。问题可能比较傻
:&先是读取一个有28列数据的文件,读入后用split()&分成了一个&若干行,28列的二维数组&(list&of&list),但是我只需要其中某些特定的列,不规律的&(比如&1,&3,4,&5,&16和17列)。不知道该如何简单的实现,直接&data[:][0,2,3]&这样不行
:&不能用&numpy&因为有些列不是数字
:&Key&Words:&FEM,&LES,&Parallel&Programming,&Multiblock,&Domain&Decompostion
:&&&&&&&&&&&&Atmospheric&Boundary&Layer,&Street&Canyon
:&&&&&&&&&&&&Turbulent&diffusion,&dispersion,&Passive&scalar&transport
:&※&修改:·tex&于&Feb&12&23:40:53&2011&修改本文·[FROM:&137.132.29.*]
:&※&来源:·水木社区&newsmth.net·[FROM:&137.132.29.*]
--:&A&panzer&division's&about&to&cut&the&road&south.
--:&Looks&like&you&guys&are&gonna&be&surrounded.
==:&We're&paratroopers,&Lieutenant.
==:&We're&supposed&to&be&surrounded.
※&来源:·水木社区&newsmth.net·[FROM:&211.99.222.*]
Re: 如何提取二维数组的某些特定列
发信人:&FenRagwort&(泽),&信区:&Python
标&&题:&Re:&如何提取二维数组的某些特定列
发信站:&水木社区&(Sat&Feb&12&23:53:17&2011),&站内
发现Python的列表切片跟Perl的列表切片实在是不同的东西,虽然名称相同
Python列表切片功能上跟Perl的splice对应,Perl的列表切片在Python没有原生对应物,只能用这种方式获取?
【&在&easy&(Easy&Company)&的大作中提到:&】
:&In&[1]:&from&operator&import&itemgetter
:&In&[2]:&a&=&[[0,&1,&2,&3,&4],&['a',&'b',&'c',&'d',&'e']]
:&In&[3]:&[itemgetter(1,&3,&4)(i)&for&i&in&a]
:&...................
※&来源:·水木社区&newsmth.net·[FROM:&221.218.152.*]
Re: 如何提取二维数组的某些特定列
发信人:&FenRagwort&(泽),&信区:&Python
标&&题:&Re:&如何提取二维数组的某些特定列
发信站:&水木社区&(Sat&Feb&12&23:55:53&2011),&转信
idx&=&[0,&2,&3]
[data[i]&for&i&in&idx]
刚学Python,语法不熟,可能有错
总之意思是把你要的field的索引存进列表idx,依次读取
【&在&tex&(TeX&&&LaTeX)&的大作中提到:&】
新手,只用用来做些简单数据处理,然后用其它软件画图。问题可能比较傻
先是读取一个有28列数据的文件,读入后用split()&分成了一个&若干行,28列的二维数组&(list&of&list),但是我只需要其中某些特定的列,不规律的&(比如&1,&3,4,&5,&16和17列)。不知道该如何简单的实现,直接&data[:][0,2,3]&这样不行
不能用&numpy&因为有些列不是数字
Key&Words:&FEM,&LES,&Parallel&Programming,&Multiblock,&Domain&Decompostion
&&&&&&&&&&&Atmospheric&Boundary&Layer,&Street&Canyon
&&&&&&&&&&&Turbulent&diffusion,&dispersion,&Passive&scalar&transport
※&修改:·FenRagwort&于&Feb&12&23:58:07&2011&修改本文·[FROM:&221.218.152.*]
※&来源:·水木社区&newsmth.net·[FROM:&221.218.152.*]
Re: 如何提取二维数组的某些特定列
发信人:&tex&(TeX&&&LaTeX),&信区:&Python
标&&题:&Re:&如何提取二维数组的某些特定列
发信站:&水木社区&(Sun&Feb&13&00:03:24&2011),&站内
非常感谢,管用
看来还有好多要学啊
【&在&easy&(Easy&Company)&的大作中提到:&】
:&In&[1]:&from&operator&import&itemgetter
:&In&[2]:&a&=&[[0,&1,&2,&3,&4],&['a',&'b',&'c',&'d',&'e']]
:&In&[3]:&[itemgetter(1,&3,&4)(i)&for&i&in&a]
:&...................
Key&Words:&FEM,&LES,&Parallel&Programming,&Multiblock,&Domain&Decompostion
&&&&&&&&&&&Atmospheric&Boundary&Layer,&Street&Canyon
&&&&&&&&&&&Turbulent&diffusion,&dispersion,&Passive&scalar&transport
※&来源:·水木社区&newsmth.net·[FROM:&137.132.29.*]
Re: 如何提取二维数组的某些特定列
发信人:&easy&(Easy&Company),&信区:&Python
标&&题:&Re:&如何提取二维数组的某些特定列
发信站:&水木社区&(Sun&Feb&13&00:08:47&2011),&站内
不熟悉Perl,Python的列表切片一般是指slice吧
http://docs.python.org/library/functions.html#slice
也就是somelist[start:stop:step]这种
【&在&FenRagwort&(泽)&的大作中提到:&】
:&标&&题:&Re:&如何提取二维数组的某些特定列
:&发信站:&水木社区&(Sat&Feb&12&23:53:17&2011),&站内
:&发现Python的列表切片跟Perl的列表切片实在是不同的东西,虽然名称相同
:&Python列表切片功能上跟Perl的splice对应,Perl的列表切片在Python没有原生对应物,只能用这种方式获取?
:&【&在&easy&(Easy&Company)&的大作中提到:&】
:&:&In&[1]:&from&operator&import&itemgetter
:&:&In&[2]:&a&=&[[0,&1,&2,&3,&4],&['a',&'b',&'c',&'d',&'e']]
:&:&In&[3]:&[itemgetter(1,&3,&4)(i)&for&i&in&a]
:&:&...................
:&※&来源:·水木社区&newsmth.net·[FROM:&221.218.152.*]
--:&A&panzer&division's&about&to&cut&the&road&south.
--:&Looks&like&you&guys&are&gonna&be&surrounded.
==:&We're&paratroopers,&Lieutenant.
==:&We're&supposed&to&be&surrounded.
※&来源:·水木社区&newsmth.net·[FROM:&211.99.222.*]
Re: 如何提取二维数组的某些特定列
发信人:&tex&(TeX&&&LaTeX),&信区:&Python
标&&题:&Re:&如何提取二维数组的某些特定列
发信站:&水木社区&(Sun&Feb&13&00:08:40&2011),&转信
貌似不行&:(
【&在&FenRagwort&(泽)&的大作中提到:&】
:&这样行吗
:&idx&=&[0,&2,&3]
:&[data[i]&for&i&in&idx]
:&...................
Key&Words:&FEM,&LES,&Parallel&Programming,&Multiblock,&Domain&Decompostion
&&&&&&&&&&&Atmospheric&Boundary&Layer,&Street&Canyon
&&&&&&&&&&&Turbulent&diffusion,&dispersion,&Passive&scalar&transport
※&来源:·水木社区&newsmth.net·[FROM:&137.132.29.*]
Re: 如何提取二维数组的某些特定列
发信人:&easy&(Easy&Company),&信区:&Python
标&&题:&Re:&如何提取二维数组的某些特定列
发信站:&水木社区&(Sun&Feb&13&00:13:56&2011),&站内
【&在&FenRagwort&(泽)&的大作中提到:&】
:&标&&题:&Re:&如何提取二维数组的某些特定列
:&发信站:&水木社区&(Sat&Feb&12&23:55:53&2011),&转信
:&这样行吗
:&idx&=&[0,&2,&3]
:&[data[i]&for&i&in&idx]
这个是可以的,只是楼主的是list&of&list,还要再套一层。
In&[1]:&from&operator&import&itemgetter
In&[2]:&a&=&[[0,&1,&2,&3,&4],&['a',&'b',&'c',&'d',&'e']]
In&[3]:&s&=&(1,&3,&4)
In&[4]:&[itemgetter(*s)(i)&for&i&in&a]
Out[4]:&[(1,&3,&4),&('b',&'d',&'e')]
In&[5]:&[[x[i]&for&i&in&s]&for&x&in&a]
Out[5]:&[[1,&3,&4],&['b',&'d',&'e']]
另外,itemgetter是c语言实现的,速度上(可能)有些优势,不过这个例子规模
In&[6]:&timeit&[itemgetter(*s)(i)&for&i&in&a]
1000000&loops,&best&of&3:&1.88&us&per&loop
In&[7]:&timeit&[[x[i]&for&i&in&s]&for&x&in&a]
100000&loops,&best&of&3:&3.18&us&per&loop
:&刚学Python,语法不熟,可能有错
:&总之意思是把你要的field的索引存进列表idx,依次读取
:&【&在&tex&(TeX&&&LaTeX)&的大作中提到:&】
:&新手,只用用来做些简单数据处理,然后用其它软件画图。问题可能比较傻
:&先是读取一个有28列数据的文件,读入后用split()&分成了一个&若干行,28列的二维数组&(list&of&list),但是我只需要其中某些特定的列,不规律的&(比如&1,&3,4,&5,&16和17列)。不知道该如何简单的实现,直接&data[:][0,2,3]&这样不行
:&不能用&numpy&因为有些列不是数字
:&Key&Words:&FEM,&LES,&Parallel&Programming,&Multiblock,&Domain&Decompostion
:&&&&&&&&&&&&Atmospheric&Boundary&Layer,&Street&Canyon
:&&&&&&&&&&&&Turbulent&diffusion,&dispersion,&Passive&scalar&transport
:&※&修改:·FenRagwort&于&Feb&12&23:58:07&2011&修改本文·[FROM:&221.218.152.*]
:&※&来源:·水木社区&newsmth.net·[FROM:&221.218.152.*]
--:&A&panzer&division's&about&to&cut&the&road&south.
--:&Looks&like&you&guys&are&gonna&be&surrounded.
==:&We're&paratroopers,&Lieutenant.
==:&We're&supposed&to&be&surrounded.
※&来源:·水木社区&newsmth.net·[FROM:&211.99.222.*]
Re: 如何提取二维数组的某些特定列
发信人:&easy&(Easy&Company),&信区:&Python
标&&题:&Re:&如何提取二维数组的某些特定列
发信站:&水木社区&(Sun&Feb&13&00:15:09&2011),&站内
【&在&tex&(TeX&&&LaTeX)&的大作中提到:&】
:&标&&题:&Re:&如何提取二维数组的某些特定列
:&发信站:&水木社区&(Sun&Feb&13&00:03:24&2011),&站内
:&非常感谢,管用
:&看来还有好多要学啊
:&【&在&easy&(Easy&Company)&的大作中提到:&】
:&:&In&[1]:&from&operator&import&itemgetter
:&:&In&[2]:&a&=&[[0,&1,&2,&3,&4],&['a',&'b',&'c',&'d',&'e']]
:&:&In&[3]:&[itemgetter(1,&3,&4)(i)&for&i&in&a]
:&:&...................
:&Key&Words:&FEM,&LES,&Parallel&Programming,&Multiblock,&Domain&Decompostion
:&&&&&&&&&&&&Atmospheric&Boundary&Layer,&Street&Canyon
:&&&&&&&&&&&&Turbulent&diffusion,&dispersion,&Passive&scalar&transport
:&※&来源:·水木社区&newsmth.net·[FROM:&137.132.29.*]
--:&A&panzer&division's&about&to&cut&the&road&south.
--:&Looks&like&you&guys&are&gonna&be&surrounded.
==:&We're&paratroopers,&Lieutenant.
==:&We're&supposed&to&be&surrounded.
※&来源:·水木社区&newsmth.net·[FROM:&211.99.222.*]
Re: 如何提取二维数组的某些特定列
发信人:&tex&(TeX&&&LaTeX),&信区:&Python
标&&题:&Re:&如何提取二维数组的某些特定列
发信站:&水木社区&(Sun&Feb&13&00:20:12&2011),&站内
不过这样之后,原来的&list&of&list&变成了&list&of&tuple&了,虽然仍然可以用&data&[][]&来索引,不知道这两个有没有什么区别
?在&easy&(Easy&Company)&的大作中提到:&】
:&不客气:)
Key&Words:&FEM,&LES,&Parallel&Programming,&Multiblock,&Domain&Decompostion
&&&&&&&&&&&Atmospheric&Boundary&Layer,&Street&Canyon
&&&&&&&&&&&Turbulent&diffusion,&dispersion,&Passive&scalar&transport
※&来源:·水木社区&newsmth.net·[FROM:&137.132.29.*]
Re: 如何提取二维数组的某些特定列
发信人:&FenRagwort&(泽),&信区:&Python
标&&题:&Re:&如何提取二维数组的某些特定列
发信站:&水木社区&(Sun&Feb&13&00:24:09&2011),&站内
Python的切片是连续的或有确定的step,似乎不能任意离散
Perl的切片里的下标可以是任意的,@array[0,2,5,13]就表示这四个位置的元素,@array[1..5,7,10]表示1,2,3,4,5,7,10元素,还可以任意顺序,不一定从小到大@array[4,2,7,13],还可以重复选取元素@array[1,3,3,3,5,7],还可以用别的数组充当下标,@foo&=&(2,4,6,7);&@bar[@foo]
比Python灵活很多
【&在&easy&(Easy&Company)&的大作中提到:&】
:&不熟悉Perl,Python的列表切片一般是指slice吧
:&http://docs.python.org/library/functions.html#slice
:&也就是somelist[start:stop:step]这种
:&...................
※&来源:·水木社区&newsmth.net·[FROM:&221.218.152.*]
Re: 如何提取二维数组的某些特定列
发信人:&easy&(Easy&Company),&信区:&Python
标&&题:&Re:&如何提取二维数组的某些特定列
发信站:&水木社区&(Sun&Feb&13&00:25:50&2011),&站内
如果不放心可以把tuple专为list
In&[10]:&[list(itemgetter(*s)(i))&for&i&in&a]
Out[10]:&[[1,&3,&4],&['b',&'d',&'e']]
tuple和list在用data[][]读取数据方面是一致的,只是tuple的不让写回去了。
【&在&tex&(TeX&&&LaTeX)&的大作中提到:&】
:&标&&题:&Re:&如何提取二维数组的某些特定列
:&发信站:&水木社区&(Sun&Feb&13&00:20:12&2011),&站内
:&不过这样之后,原来的&list&of&list&变成了&list&of&tuple&了,虽然仍然可以用&data&[][]&来索引,不知道这两个有没有什么区别
:&?在&easy&(Easy&Company)&的大作中提到:&】
:&:&不客气:)
:&Key&Words:&FEM,&LES,&Parallel&Programming,&Multiblock,&Domain&Decompostion
:&&&&&&&&&&&&Atmospheric&Boundary&Layer,&Street&Canyon
:&&&&&&&&&&&&Turbulent&diffusion,&dispersion,&Passive&scalar&transport
:&※&来源:·水木社区&newsmth.net·[FROM:&137.132.29.*]
--:&A&panzer&division's&about&to&cut&the&road&south.
--:&Looks&like&you&guys&are&gonna&be&surrounded.
==:&We're&paratroopers,&Lieutenant.
==:&We're&supposed&to&be&surrounded.
※&来源:·水木社区&newsmth.net·[FROM:&211.99.222.*]
Re: 如何提取二维数组的某些特定列
发信人:&FenRagwort&(泽),&信区:&Python
标&&题:&Re:&如何提取二维数组的某些特定列
发信站:&水木社区&(Sun&Feb&13&00:28:05&2011),&站内
tuple和set到底是啥用途啊
初学,看到比Perl多了这两种数据类型,可是tuple好像就是只读的list,set又好像是不要value只要key的dict
不知道这两种数据类型用在什么地方
【&在&easy&(Easy&Company)&的大作中提到:&】
:&如果不放心可以把tuple专为list
:&In&[10]:&[list(itemgetter(*s)(i))&for&i&in&a]
:&Out[10]:&[[1,&3,&4],&['b',&'d',&'e']]
:&...................
※&来源:·水木社区&newsmth.net·[FROM:&221.218.152.*]
Re: 如何提取二维数组的某些特定列
发信人:&easy&(Easy&Company),&信区:&Python
标&&题:&Re:&如何提取二维数组的某些特定列
发信站:&水木社区&(Sun&Feb&13&00:47:58&2011),&站内
我理解Python的切片也是只有start:stop:step这一种(还有个为了NumPy引入的Ellipsis)。
Perl的这些方式确实很灵活。
【&在&FenRagwort&(泽)&的大作中提到:&】
:&标&&题:&Re:&如何提取二维数组的某些特定列
:&发信站:&水木社区&(Sun&Feb&13&00:24:09&2011),&站内
:&Python的切片是连续的或有确定的step,似乎不能任意离散
:&Perl的切片里的下标可以是任意的,@array[0,2,5,13]就表示这四个位置的元素,@array[1..5,7,10]表示1,2,3,4,5,7,10元素,还可以任意顺序,不一定从小到大@array[4,2,7,13],还可以重复选取元素@array[1,3,3,3,5,7],还可以用别的数组充当下标,@foo&=&(2,4,6,7);&@bar[@foo]
:&比Python灵活很多
:&【&在&easy&(Easy&Company)&的大作中提到:&】
:&:&不熟悉Perl,Python的列表切片一般是指slice吧
:&:&http://docs.python.org/library/functions.html#slice
:&:&也就是somelist[start:stop:step]这种
:&:&...................
--:&A&panzer&division's&about&to&cut&the&road&south.
--:&Looks&like&you&guys&are&gonna&be&surrounded.
==:&We're&paratroopers,&Lieutenant.
==:&We're&supposed&to&be&surrounded.
※&来源:·水木社区&newsmth.net·[FROM:&211.99.222.*]
Re: 如何提取二维数组的某些特定列
发信人:&easy&(Easy&Company),&信区:&Python
标&&题:&Re:&如何提取二维数组的某些特定列
发信站:&水木社区&(Sun&Feb&13&01:08:19&2011),&站内
tuple就是immutable的list,这使得tuple可以用来做dict的key,mutable对象不能做
dict的key。
In&[22]:&a&=&(1,&2)
In&[23]:&b&=&[1,&2]
In&[24]:&{a:&'tuple'}
Out[24]:&{(1,&2):&'tuple'}
In&[25]:&{b:&'list'}
---------------------------------------------------------------------------
TypeError&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&Traceback&(most&recent&call&last)
----&&1&{b:&'list'}
TypeError:&unhashable&type:&'list'
set实现上就是没有value的dict,Python中引入set相当晚,是在2.4版本(2004年底)。
set对应数学上集合的概念,用来判断某个元素是否属于集合,速度比较快,时间复杂度
是O(1),而list或者tuple则是O(n)。
'c'&in&set(['a',&'b',&'c',&'d',&'e']),这个操作比较常见,但是在有set之前,
几个方法都不太理想。
【&在&FenRagwort&(泽)&的大作中提到:&】
:&标&&题:&Re:&如何提取二维数组的某些特定列
:&发信站:&水木社区&(Sun&Feb&13&00:28:05&2011),&站内
:&tuple和set到底是啥用途啊
:&初学,看到比Perl多了这两种数据类型,可是tuple好像就是只读的list,set又好像是不要value只要key的dict
:&不知道这两种数据类型用在什么地方
:&【&在&easy&(Easy&Company)&的大作中提到:&】
:&:&如果不放心可以把tuple专为list
:&:&In&[10]:&[list(itemgetter(*s)(i))&for&i&in&a]
:&:&Out[10]:&[[1,&3,&4],&['b',&'d',&'e']]
:&:&...................
:&※&来源:·水木社区&newsmth.net·[FROM:&221.218.152.*]
--:&A&panzer&division's&about&to&cut&the&road&south.
--:&Looks&like&you&guys&are&gonna&be&surrounded.
==:&We're&paratroopers,&Lieutenant.
==:&We're&supposed&to&be&surrounded.
※&来源:·水木社区&newsmth.net·[FROM:&211.99.222.*]
Re: 如何提取二维数组的某些特定列
发信人:&ndesolver&(omg),&信区:&Python
标&&题:&Re:&如何提取二维数组的某些特定列
发信站:&水木社区&(Sun&Feb&13&03:59:08&2011),&站内
大牛你贴的这个是用来算每步执行时间的么?
能不能分享一下用的什么package?
【&在&easy&(Easy&Company)&的大作中提到:&】
:&这个是可以的,只是楼主的是list&of&list,还要再套一层。
:&In&[1]:&from&operator&import&itemgetter
:&In&[2]:&a&=&[[0,&1,&2,&3,&4],&['a',&'b',&'c',&'d',&'e']]
:&...................
※&来源:·水木社区&http://newsmth.net·[FROM:&152.3.68.*]
Re: 如何提取二维数组的某些特定列
发信人:&easy&(Easy&Company),&信区:&Python
标&&题:&Re:&如何提取二维数组的某些特定列
发信站:&水木社区&(Sun&Feb&13&08:32:31&2011),&站内
ipython可以用timeit&statement来计算执行一条语句(或者表达式)所需的时间。
http://ipython.scipy.org/moin/Download&有下载地址和安装方法。
这个是对python自身timeit模块的包装,Python直接来也可以,例如计算10000的
$&python2.7&-m&timeit&-s&"import&&n&=&10000"&"math.factorial(n)"
10&loops,&best&of&3:&56.4&msec&per&loop
$&python3.2&-m&timeit&-s&"import&&n&=&10000"&"math.factorial(n)"
100&loops,&best&of&3:&7.55&msec&per&loop
可以看出,Python3.2比Python2.7速度有明显提高。
【&在&ndesolver&(omg)&的大作中提到:&】
:&标&&题:&Re:&如何提取二维数组的某些特定列
:&发信站:&水木社区&(Sun&Feb&13&03:59:08&2011),&站内
:&大牛你贴的这个是用来算每步执行时间的么?
:&能不能分享一下用的什么package?
:&【&在&easy&(Easy&Company)&的大作中提到:&】
:&:&这个是可以的,只是楼主的是list&of&list,还要再套一层。
:&:&In&[1]:&from&operator&import&itemgetter
:&:&In&[2]:&a&=&[[0,&1,&2,&3,&4],&['a',&'b',&'c',&'d',&'e']]
:&:&...................
:&※&来源:·水木社区&http://newsmth.net·[FROM:&152.3.68.*]
--:&A&panzer&division's&about&to&cut&the&road&south.
--:&Looks&like&you&guys&are&gonna&be&surrounded.
==:&We're&paratroopers,&Lieutenant.
==:&We're&supposed&to&be&surrounded.
※&来源:·水木社区&newsmth.net·[FROM:&211.99.222.*]
Re: 如何提取二维数组的某些特定列
发信人:&FenRagwort&(泽),&信区:&Python
标&&题:&Re:&如何提取二维数组的某些特定列
发信站:&水木社区&(Sun&Feb&13&11:36:41&2011),&站内
就是为了提高性能,节省资源用的啊
我发现Python好些地方的做法都是为了节省资源?
是说所有的变量都是一个引用?变量全是引用看起来似乎目的就是省内存,不过初学者很容易搞糊涂
a&=&b不是复制数据,而是复制引用,a&=&b[:]才是复制数据,刚看到这个有点不适应
【&在&easy&(Easy&Company)&的大作中提到:&】
:&tuple就是immutable的list,这使得tuple可以用来做dict的key,mutable对象不能做
:&dict的key。
:&In&[22]:&a&=&(1,&2)
:&...................
※&来源:·水木社区&newsmth.net·[FROM:&221.218.152.*]
Re: 如何提取二维数组的某些特定列
发信人:&hgoldfish&(老鱼),&信区:&Python
标&&题:&Re:&如何提取二维数组的某些特定列
发信站:&水木社区&(Sun&Feb&13&13:42:32&2011),&站内
python有好些地方确实会特别地优化内存使用和时间效率,不过似乎很少会为此改变语义,而专门创造那些莫名其妙的语法。毕竟,Python的主要目标就是清晰的语法。最近新增的一些语法,比如set的新写法,with,annotation,condition&expression等等,我觉得都是些语法糖。主要目标也是为了让程序更清晰一些。
你说的变量引用,我觉得用Windows的“句柄”这个名词会更切合实际情况。现在主流的语言都是这样搞的。用Java也会碰到同样的问题。复制列表写成"[:]"我觉得不好,我现在更喜欢这样写:
newlist=list(oldlist)
【&在&FenRagwort&(泽)&的大作中提到:&】
:&就是为了提高性能,节省资源用的啊
:&我发现Python好些地方的做法都是为了节省资源?
:&是说所有的变量都是一个引用?变量全是引用看起来似乎目的就是省内存,不过初学者很容易搞糊涂
:&...................
灭绝人性啊
※&来源:·水木社区&http://newsmth.net·[FROM:&121.205.126.*]
Re: 如何提取二维数组的某些特定列
发信人:&yaohua2000&(周济是母驴),&信区:&Python
标&&题:&Re:&如何提取二维数组的某些特定列
发信站:&水木社区&(Sun&Feb&13&13:46:47&2011),&站内
实际应用是这么回事,但是在语义上不仅仅这么简单。
tuple对应于数学上的“元组”,元素间语义上是并列的关系,list则是一个列表,是一个串。例如描述一个二维座标&x=2,y=3,则为&(2,&3),这是一个二元组,描述所有小于5的质数则为&[2,&3],是一个列表
【&在&easy&(Easy&Company)&的大作中提到:&】
tuple就是immutable的list,
--:&A&panzer&division's&about&to&cut&the&road&south.
--:&Looks&like&you&guys&are&gonna&be&surrounded.
==:&We're&paratroopers,&Lieutenant.
==:&We're&supposed&to&be&surrounded.
※&修改:·yaohua2000&于&Feb&13&13:47:50&2011&修改本文·[FROM:&60.25.249.*]
※&来源:·水木社区&newsmth.net·[FROM:&60.25.249.*]

我要回帖

更多关于 python 多维数组排序 的文章

 

随机推荐