雅典人和西哥特人

这篇文章是有感于尼尔-波兹曼在纽约大学的毕业演讲而作,尼尔-波兹曼最为人熟知的作品是《娱乐至死》,前段时间我也刚刚阅读完,今天恰巧在图书馆还书时看到一本《世界名校开学毕业典礼演讲精选》,遂借回来当作闲暇时间放松阅读。刚刚随机翻开一篇,正是这篇《雅典人和西哥特人》,完整读完这篇讲稿,似曾相识,这样的思想在我的认知系统里出现过,但记忆是会错乱的,依稀记得在不知第几期的《锵锵行天下》里,貌似是在希腊,窦文涛、周轶君有谈到说其实每个人在某种程度上都是希腊人,大概是这个意思。波兹曼的这篇讲稿无论在何时何地仍具启发意义。

先把波兹曼的全文放上:

致纽约大学毕业生的演讲,该演讲稿似未曾公开发布,仅为波兹曼的创作

尼尔·波兹曼(Neil Postman,1931~2003年):美国著名作家、文化批评家,1953年毕业于纽约州立大学,1958年毕业于哥伦比亚大学师范学院,获教育学博士学位,1959年起长期任教于纽约大学,曾任纽约大学教育学院文化与传播系主任,曾于1987年获奥威尔奖(George Orwell Award),主编普通语义学杂志《Et Cetera》达十年,其作品众多,译成中文的有《童年的消失》、《娱乐至死》等。

各位老师、父母、来宾、毕业生,不用担心。我很明白,在今天这样一个如此令人兴奋的日子,你们对于演讲者的要求,首先就是言简意赅,这点我不会让你们失望的。我的演讲总共有85个句子,你们听到我刚才已经说了4句。我将花大概12分钟来说完。我必须告诉你们,对于我来说,要做到如此简练可不容易,因为我已经选择了你们的祖先这样一个复杂的主题作为我的话题。当然,说的不是你们生物学上的祖先,对此我一无所知,而是你们精神上的祖先,对此我略知一二。准确地说,我是想告诉你们,很多年前曾经有过两群人,他们的影响仍旧存在于我们中间。他们彼此判然有别,代表着相反的价值标准和传统。我想,今天让你们回想他们是合适之举,因为要不了多久,你们就必须选择站在哪群人的精神行列之中。

第一群人生活在大约两千五百年前,我们今天称作希腊的地方,住在我们今天称作雅典的城市。对他们的起源,我们所知道的远远不如我们想知道的,不过对他们的成就我们知之甚多。比如说,他们是第一个发展出完整的字母表的民族,因此他们也成为地球上第一个真正有文化的民族。他们发明了政治民主的观念并欣然实践之,所表现出的活力令我们汗颜。他们发明了我们称为哲学的东西。他们还发明了我们称作逻辑和修辞的东西。他们非常接近于发明我们称为科学的东西,他们中的一个人,名字叫做德谟克里特,在两千三百年前,在任何现代科学家能想到之前,就构想出了物质的原子理论,他们写作并演唱具有无法超越之优美和洞见的史诗。他们写作并上演戏剧,这些戏剧在三千年之后仍旧具有激发观众之笑和泪的力量。他们甚至还发明了今天我们称为奥林匹克的东西,在他们的价值标准中,享有最高地位的是人们应该在所有事物中追求卓越。他们信仰理性,他们信仰美,他们信仰适度,他们发明了我们今天作为生态学来了解的词语和观念。

大约两千年前,他们的文化的活力衰退,这些人开始消失,但他们所创造的没有消失。他们的想象、艺术、政治、文学和语言遍布全世界,以至于我们今天在就任何话题发言的时候,很难不重复某个雅典人在二千五百三十三年前有关这个问题的言论。

第二群人生活在我们今天称作德国的地方,大概在一千七百年前兴盛起来。我们将他们称为西哥特人,你也许记得,你们六年级或七年级的老师曾经提到过他们。他们是非常棒的骑士,这大概是他们在历史上唯一让人愉快的事情。他们是掠夺者,残酷无情。他们的语言粗俗而肤浅。他们的艺术拙劣甚至可以说是古怪。他们横扫欧洲,沿路摧毁一切,他们侵占了罗马帝国。比起焚书、玷污建筑、毁坏艺术品,他们没有更喜欢做的事情了。从他们那里我们找不到诗歌、戏剧、逻辑、科学以及人文主义政治学。

  和雅典人一样,西哥特人也消失了,不过在他们带来的所谓的黑暗时代之后。欧洲花了差不多一千年的时间才从西哥特人带来的浩劫中恢复过来。

现在,我想说的是,雅典人和西哥特人仍然存在,这是通过我们以及我们的生活方式而实现的。在我们周围,在这座大厅,在这个社区,在我们的国家,有一些人看待这个世界的方式反映着雅典人的方式,而有些人则是以西哥特人的方式看待世界。当然,我的意思不是说现代的雅典人在街上若有所思地闲逛,还朗诵着诗歌和哲学,也不是说西哥特人是杀手。我想说的是,成为雅典人或西哥特人就是围绕着一套价值标准来组织你们的生活。雅典人是一种观念,西哥特人也是一种观念。我给你们简单说一下这些观念包括哪些内容。

成为一个雅典人就是要拥有知识,尤其是要拥有神圣的求知欲。沉思、推理、实验、怀疑,所有这些,对于雅典人来说,就是一个人所能完成的最高尚的行为。对于西哥特人来说,求知欲是无用的,除非它能帮助你挣钱或是获得凌驾他人之上的权力

  成为雅典人就是要珍视语言,因为你们相信它是人类最宝贵的天赋。在雅典人使用语言的时候,他们努力做到优雅、准确和丰富,他们钦佩那些能获得这些技能的人。对于西哥特人来说,这个词和另外一个词一样好,一个句子和另一个句子没有区别。除了陈词滥调,西哥特人的语言没有更高的追求。

  成为雅典人就是要明白维系文明社会之完整的纽带是细小而脆弱的,因此,雅典人极为重视传统、社会制约和连续性。对一个雅典人来说,不讲礼貌是违反社会秩序的行为。现代的西哥特人对这些毫不在意。西哥特人认为自己是宇宙的中心,传统是为了他们自己的便利才存在的,彬彬有礼是虚伪和负担,历史不过是昨天报纸上的东西

  成为雅典人就是要关注公共事务,关注公众行为的进步。当然,古代的雅典人也有一个词来指那些不这么做的人,这个词就是“蠢人”,由此我们有了“白痴”这个词。现代的西哥特人只对自己的事情感兴趣,丝毫感觉不到团体的意义。

  最后,成为一个雅典人就是要尊重纪律、技能和品味,这些是产生持久艺术所必需的。因此,在接近一件艺术品的时候,雅典人通过学习和体验来完备他们的想象力。对一个西哥特人来说,除了流行的程度,没有其他衡量艺术之卓越的标准。让大多数人喜欢的就是好的。西哥特人不尊重,甚至也不承认其他的标准。

现在,所有这一切和你们的关系是明显的。最终,像我们其他人那样,你们必须站在这边或是那一边。你们必须做雅典人或西哥特人。当然,成为雅典人要难一些,因为你们必须学会如何成为雅典人,你们必须为此付出努力,而我们所有人,在某种程度上都是天生的西哥特人。这就是为什么西哥特人要比雅典人多的原因。我必须告诉你们,你们不能仅仅靠上学或是不断获取学位就能变成雅典人。我的岳父是我认识的人当中最虔诚的雅典人之一,他的整个成年生活都是作为纽约市第七大道上的裁缝度过的;另一方面,我认识的许多医生、律师和工程师,他们都是实实在在的西哥特人。我也必须告诉你们,说到这我既悲伤又羞愧,在我们的一些著名大学中,甚至就在我们的纽约大学,有这样一些教授,我们完全可以说他们就是隐秘的西哥特人。不过,你们一定要相信,毕竟学校从本质上来说还是一个雅典人的观念。雅典的文化成就和这所大学的教员的行为之间有着直接联系。我很容易就可以想象得到,柏拉图、亚里士多德、德谟克里特在我们的课堂上也会感到舒服自在,而西哥特人只会在墙上涂鸦。

因此,无论你们是否意识到,你们上大学的目的是要看到雅典人的方式,并对其产生兴趣。今天我们还无法了解你们中的多少人将会选择这种方式,多少人将不会。你们年轻,我们还没法看到你们的将来。不过我要告诉你们,这也是我的结束语:我希望将来流传的消息是,你们这届毕业班中的雅典人在人数上要大大超过西哥特人,我想不到比这更好的祝愿之词了。谢谢,祝贺你们!

(陈 越 译)

链接:http://data.book.hexun.com/chapter-1904-1-40.shtml

看毕,一定会想,为什么把雅典人和西哥特人放在一起?二者在历史的长河中都曾灿若繁星,也都消失了,但二者对于后世的影响以及后人对他们的看法则截然不同。雅典人消失了,但他们的创造没有消失,他们的想象、艺术、政治、文学和语言遍布全世界,以至于我们今天在就任何话题发言的时候,很难不重复某个雅典人在二千五百三十三年前有关这个问题的言论,再看看西哥特人呢,西哥特人也消失了,不过在他们带来的所谓的黑暗时代之后。欧洲花了差不多一千年的时间才从西哥特人带来的浩劫中恢复过来。

这种差异类似于鲁迅笔下的“有的人活着,他已经死了;有的人死了,他还活着”,雅典人对后世的影响有多大呢?从我们目前生活空间的活动来看,似乎雅典人的影子无处不在,哲学、逻辑和修辞、戏剧、理性、奥林匹克,这些从不会消失,并将继续影响后世。

波兹曼对于毕业生的祝愿是成为一个雅典人,其实不仅仅是毕业生,这样的祝愿对大学里的每个学子都适用。

我们现今在探究哲学时常常要回归到古希腊时代的哲学去,柏拉图、亚里士多德、德谟克里特的智慧源远流长,回归到哲学本身的定义,哲学的英文是philosophy,前缀 phi 表示“爱”的意思,哲学就是“爱智慧”的意思,我们对智慧的爱从不会减少。

如果跨越中西,我想从另一个层面理解的话,雅典人的一部分是我们所说的君子,给我的印象是雅典人对自身的要求更加全面,尤其是民主和参与公共事务上,但这方面与我们的思想又有异曲同工之妙,比如“居庙堂之高则忧其民,处江湖之远则忧其君”,比如“先天下之忧而忧,后天下之乐而乐”,但整体而言民众关注公共事务的这种意识并不是很强。往更远的地方去想,如果一个社会里雅典人远远多于西哥特人的话,这个社会将具有无限的发展潜力和空间。

最终还是要回归到如何做一个雅典人的问题上。雅典人拥有神圣的求知欲;雅典人追求语言的优雅、准确和丰富;雅典人重视传统、社会制约和连续性;雅典人关注公共事务、关注公共行为的进步;雅典人尊重纪律、技能和品味,这些是产生持久艺术所必需的;雅典人在接近一件艺术品的时候会通过学习和体验来完备他们的想象力,这些都是雅典人的特点。

反观西哥特人的表现,或许会给你更大的冲击,求知欲是无用的,除非它能帮助你挣钱或是获得凌驾他人之上的权力;这个词和另外一个词一样好,一个句子和另一个句子没有区别,除了陈词滥调,西哥特人的语言没有更高的追求;西哥特人认为自己是宇宙的中心,传统是为了他们自己的便利才存在的,彬彬有礼是虚伪和负担,历史不过是昨天报纸上的东西;现代的西哥特人只对自己的事情感兴趣,丝毫感觉不到团体的意义;对一个西哥特人来说,除了流行的程度,没有其他衡量艺术之卓越的标准。让大多数人喜欢的就是好的。西哥特人不尊重,甚至也不承认其他的标准。

会发现西哥特人远比雅典人多,为何?当然是因为成为一个雅典人更难,所以尼尔-波兹曼也说,“我们所有人,在某种程度上都是天生的西哥特人”,so,man,what’s your choice?

成为一个雅典人,必须要付出努力。

20190104 Finished in 京师大厦

 

统计图表描述之箱式图

了解箱式图之前首先对一个基本概念要有所了解。那就是四分位数。

四分位差(quartile deviation),通常用符号Q来表示,指在一个次数分配中,中间50%的次数的距离的一半。在一组数据中,它的值等于P25到P75距离的二分之一。这个差异量数能够反映出数据分布中中间50%数据的散布情况。

由于P25之下占有总次数的四分之一,故P25称为第一四分位Q1,中数或P50称为第二四分位(Q2),P75称为第三四分位(Q3).四分位差就是第三四分位与第一四分位之差的一半。


箱式图(Boxplot),包含多个基本统计量,以集中展现成组数据分布的形状、中心和分散特征的一类统计图。较适合于多组数据之间的对比,同时也是分析离群值(outliers)的有效工具。(发明人John Tukey,1977)

  • 简单箱式图:

分别以四分位数(Q3,Q1)为箱型方框的上、下边,以最大值(max)、最小值(min)为线的上、下端,同时标出中位数(median)的位置。如下图:

123

其中(2)呈对称分布特点;(1)分布呈左偏;(3)分布呈右偏。通过箱式图中数据点的位置关系可以反映数据分布的对称性。

此外,还有考虑离群值的箱式图,如下图:

456

20181203

磁共振扫描序列及应用场景

Sequence Name Synopsis Application
AAL_Scout 3D Scout Scout/Localizer
CV, CV_NAV True FISP with navigator option Cardiac Imaging
CISS Constructive Interference in Steady-State. A gradient echo stimulated T2 echo using TrueFISP High resolution T2 weighted MRI
CSI_SE, CSI_ST,

CSI_FID

Chemical shift imaging (CSI) with spin echo,

stimulated echo and FID options

Spectroscopic imaging
DESS Double echo steady state Joint & prostate imaging
EP_SEG_FID

EP_SEG_SE

Gradient echo and spin echo segmented EPI Fast structural imaging
EP2D_BOLD Gradient echo EPI fMRI
EP2D_DIFF Fast (EPI-based) diffusion-weighted or tensor

imaging

Tractography, molecular

self-diffusion

EP2D_FID, EP2D_PACE,

EP2D_SE

2D EPI. PACE includes 2D motion correction Fast imaging
EP2D_PASL Pulsed ASL (PASL) Perfusion
EP2D_pCASL Pseudo continuous ASL (pCASL) Perfusion
FID Simple FID acquisition Spectroscopy
FL_FQ Flow quantification of vasculature Velocimetry
FL_PC Phase contrast GRE Angiography
FL_PERI_TOF, FL_TOF GRE Time of flight imaging Angiography
FL3D_CE, FL3D_CE_NAV,

FL3D_RD,

3D FLASH for exogenous (Gd) perfusion imaging DCE Perfusion, Angiography
FL3D_VIBE Volumetric Interpolated Breath-hold Structurals
GRE Conventional GE imaging Structurals, field mapping,

T2* imaging

HASTE Single shot fast spin echo imaging Breathheld T2 weighted

Structurals

MEDIC Multi-echo data image combination Structurals
PSIF Steady-state GRE/SE sequence T2* or T2 weighted imaging
SE, SE_15B130,

SE_20RB130HF, SE_MC

Spin Echo imaging Structurals
SVS_SE, SVS_ST Single voxel spectroscopy with spin or stimulated

echoes similar to PRESS.

Spectroscopy
TFL, TFL_CB Turbo FLASH including MPRAGE Structurals, Angiography,

T2* mapping

TPI Twisted Projection Imaging (by special request

only)

Multinuclear imaging
TRUFI True FISP Steady-state free precession. Angiography, Cardiac
TSE, TSE_NAV,

TSE_VFL

Turbo spin-echo (TSE) Structurals

 

CE: Contrast Enhanced, CISS: Constructive Interference in Steady-State, CSI: Chemical-Shift Imaging, DWI: Diffusion-Weighted Imaging, DTI: Diffusion tensor imaging, EPI: Echo Planar Imaging, FID: Free Induction Decay, FISP: Fast-Imaging in Steady-state Precession, FLASH: Fast Low-Angle SHot, GRE: Gradient-Recalled

以上内容转自:https://upci.upmc.edu/imaging/pdf/Sequences.pdf,仅供学习使用

20181128

《鎌仓物语》

《鎌仓物语》观影结束
日版《捉妖记》?也是设计了些可爱的小妖怪,贯穿始终。

IMG_20180915_125706.jpg

当我临时起意决定去看这部分电影时真没想到它是这样的剧情的,一听到什么什么物语,总感觉会是一种温情风,看完这部电影只能让我怀疑这种印象只能是我的刻板印象,而这种刻板印象的由来绝对与日语到汉语的翻译有关,我是抱着一种娓娓道来的期待去观影的,现在想来,看任何一部影片,永远不要带任何的期望,纯粹地借助于感官去感受,如果你通过感官感受到了内心的震动,ok,这是一部让你动心的影片,当然,这不仅仅适用于文艺片,优秀的动作片有时也会有那么一丝触心之感,或许没有余味。

《鎌仓物语》,以一个可爱的场景开头,一位作家和比他小很多岁的女孩子刚刚结婚,新婚旅行刚刚结束,来到了镰仓。女主叫亚纪子,男主叫一色正和,女主称正和为老师。镰仓,一个神奇的地方,对正和而言,这个妖怪与人类和谐相处的世界他已习以为常,而亚纪子,则像一个刚从大学校园出来的大学生,处处充满了好奇,却也有着畏惧,其实也差不多,亚纪子也就23岁而已,跟我同龄人嘛。

正和是位作家,作家就是要靠想象力生存。一次偶然的机会,亚纪子在整理那个正和让她千万不要进的储物柜时发现了几份手稿,当她拿给正和时,正和如获至宝,那时他视之为天才的作家甲泷的作品,作品未完稿,一定好奇为啥没有完稿,这些在后来都会揭晓。

平淡的生活不会就这么继续着,这不,波浪接踵而至,先是男女主二人在妖怪的夜市买东西,买到了松茸,是的,就是那个我没有吃过超级贵的松茸,日元300元一小盘,亚纪子说好便宜啊,赶紧买下来,拿回去就心满意足展现自己的厨艺,亚纪子把松茸炖了,炖的时候还特意拿着那块特殊的松茸犹豫了下。正和说,松茸哪有你这样做的,这样一炖不是把鲜味都炖没了吗?咦,话可别说太早,先喝一口再说。Kidding me?竟然这么好喝,不得不表扬一下我如此优秀的妻子。But,松茸虽好,可不要贪吃奥,亚纪子出去了一下,回来就发现正和躺在地上,嘴里是一阵烟雾缭绕,发生了什么?正和的灵魂出了窍,亚纪子就使劲往回按,此时一位神奇的百岁婆婆就出场了,在影视剧中,老婆婆一般是不轻易出场的,一旦出场,必有神力。婆婆提起一根棍子,照着正和的背部一打,正和的灵魂就回到了身体。正和醒来了,他说,好爽,我们男主就是不一般,生死时刻感觉是好爽。婆婆问亚纪子,你是不是也喝了?亚纪子点点头,此刻,她的嘴里也开始烟雾缭绕,吓得她赶紧把灵魂按了回去。但这就埋下了伏笔,这段时间,她的灵魂随时有出窍的可能,那女主是怎么办的呢?当然是来搞笑的啊,她戴上了口罩,想问这么神奇的口罩是在哪里买的?镰仓就是这么个神奇的地方,口罩也是不一般的口罩。

又一段平凡的日子就这么过去了,大事发生了。

贫穷之神降临正和家,这一段私以为纯粹搞笑,贫穷之神就是走到哪里就让哪里倾家荡产,就是惩恶扬善的角色,他没想到,他会遇到一个如此善良的亚纪子,亚纪子做饭给他吃,他说那是800多年来吃过最好吃的饭,后来,当贫穷之神要离开时,他赠与亚纪子一个碗,作为交换,善良的亚纪子也送了这位大神一个碗。谁都不会想到,正是大神送的这个神奇的碗,后来会发挥救命角色,也许这一段就是为了做这个铺垫吧。

日子啊,依旧在过。

亚纪子接到一通电话,急急忙忙跑着去找正和,不料想在路上却被妖怪陷害,之后才发现自己的身体不见了,她胆战心惊地敲了敲正和的门想告诉她这个严肃的问题,但他的老师正和可是个大作家,后天就要交搞了,此刻的他是万万不可打扰的。此刻,亚纪子的沉默都是爱。她就要这样离开心爱的老师正和了吗?
是的,毫无悬念,离开了,虽然剧情曲折了一些,还是孤身去往了黄泉之国。此时就要提到死神局,死神局是人间和黄泉之国的中介,一般人死亡之后如果有特殊情况可以向死神局提出申请,申请灵魂留在亲人身边一段时间,但亚纪子很特殊,她的身体找不到了,可爱的死神姐姐只能消耗正和的身体能量来维持亚纪子的人间存活时长。可是,爱情啊,深爱的人怎么忍心看对方因为自己而日渐憔悴。
亚纪子艰难地做了决定,她选择奔赴黄泉之国。她给正和留下了一封告别信,当正和看到信,心痛不已,飞奔而出,每一个脚步似乎都要崩溃,他追上了亚纪子,还是被亚纪子说服。正和望着那辆通往黄泉之国的复古电车,这是他第二次看到,第一次欣喜,第二次绝望。他还有第三次,第三次是期望。
正和终于找到了亚纪子的身体,他做好准备,带上老婆婆给她的甲泷在黄泉的住址,别问为啥老婆婆知道住址,老婆婆就是这么神奇,做好准备,正和要去黄泉之国带回亚纪子。

他来到了黄泉之国,可爱的死神姐姐告诉他,每个人看到的黄泉之国是不一样的,是由自己的想象决定的。小姐姐带路,找到了甲泷的家。正和敲门,出来的是他妈,很神奇,而后出来了作家甲泷,正和一直以为甲泷才是他的亲生父亲,母亲和甲泷背叛了他父亲才有了他,这是他童年时就有的印象,一直耿耿于怀,持续到现在,而且他唯一一次对亚纪子发脾气就是因为他不想提父母的事,觉得很耻辱。所幸,当真相大白,一切都是正和的错觉,他只有一个父亲,那两个角色都是他父亲,而甲泷五四朗和一色宏太郎是同一个人,甲泷是他父亲一色宏太郎的笔名,那篇稿件没有完成也是因为甲泷来黄泉之国找正和的母亲,二人在黄泉之国没有回去。

一切都水落石出,正和要去英雄救美了,父亲告诉他,虽然绑架亚纪子的天头鬼很厉害,但还是有办法的,要依靠自己的想象力战斗。正和就出发了,历经一番起起伏伏,与天头鬼激战,眼见处于下风,危急时刻,当天头鬼紧紧缠住正和胁迫亚纪子如果不跟着他口述跟他结婚的誓言就要把正和吃掉,当亚纪子即将说完最后一个字,奇迹出现了,贫穷之神的碗出现了,这个神奇的碗拯救了他们,这个碗是神的物件,而天头鬼只是妖,妖根本不是神的对手。好一个失魂落魄的天头鬼,从这一段故事才知道亚纪子跟正和已经是好几世的夫妻,而天头鬼一直在追亚纪子,追了几世还是失败了,奈何他命由天不由他。

大结局,鎌仓物语,爱情的气息。

观影时,当死神姐姐出场时感觉很像《小偷家族》里的那个姐姐扮演者,查了下,还真是,她的表演也很为电影增色不少,当然,增的是喜剧色彩。

且写至此。

20180915


附图:

字符串压缩

有这么一道题,要求用python实现:

Question 4 (6 marks): Deja Vu
Your company is creating the next WinZip!
WinZip is a popular program that makes your files smaller to save storage space and download times. You are a new hire on the data compression team, and you are asked to create the first processing stage, in which repeated data is identified for further checking.
Your task is to obtain from the user a text string to be compressed, and then replace each repeated character in this text string with a relative index to the previous occurrence of the character, thus creating a list that is linked (so that recent substrings beginning with a given character can be located easily).
You must output each repeated character as an open parenthesis, a negative number, and then a close parenthesis. This counts as only one position in the resulting string. You may assume that there are no parentheses in the input, or that if there are, they need not be distinguishable from any parentheses you add.

For example, given the text string ‘hello’, you will output the string ‘hel(-1)o’, indicating that after ‘hel’ there is a repeated character which can be found by going backwards one character in the string. Multiple repeats point to the most recent, for instance ‘aardvark’ gives ‘a(-1)rdv(-4)(-4)k’.
First sample session with the program:
Text to compress?
hello hel(-1)o
Second sample session with the program:
Text to compress? aardvark
a(-1)rdv(-4)(-4)k
Third sample session with the program:
Text to compress?
The cat in the hat
The cat(-4)in(-3)(-5)(-11)(-11)(-4)(-3)(-11)(-6)

如下图,可以更清晰:

image.png

实现方法:

# 20180826 By Galory
# Email:996377370a@gmail.com
# coding:utf-8

string_input = input("Text to compress?")
# 新建一个列表,保存当前字符串
str_list = []
for i in string_input:
    if i not in str_list:
        # 把当前字符串添加进str_list列表中
        str_list.append(i)
        print(i, end="")
    elif i in str_list:
        # 把列表逆序输出
        current_str = str_list[::-1]
        # 把列表转换为字符串
        str_current = "".join(current_str)
        # 字母重复出现时输出其上一次出现时的位置
        print("(-" + str(str_current.find(i) + 1) + ")", end="")
        str_list.append(i)

写这个程序get到的知识:

  • 字符串与列表的转换
列表转字符串:
命令:"".join(list)
其中,引号中是字符之间的分割符,如“,”,“;”,“\t”等等
-----------------------------------------------
列表转字符串:
命令:
str_name = "Ths is a string."
list_new = list(str_name)
  • python中字符串查找的 find和index方法
# 这里直接引自链接:http://outofmemory.cn/code-snippet/6682/python-string-find-or-index
python字符串查找有4个方法,1.find,2.index方法,3.rfind方法,4.rindex方法。

1.find()方法:查找子字符串,若找到返回从0开始的下标值,若找不到返回-1

info = 'abca'
print info.find('a')##从下标0开始,查找在字符串里第一个出现的子串,返回结果:0

info = 'abca'
print info.find('a',1)##从下标1开始,查找在字符串里第一个出现的子串:返回结果3

info = 'abca'
print info.find('333')##返回-1,查找不到返回-1
2.index()方法:

python的index方法是在字符串里查找子串第一次出现的位置,类似字符串的find方法,不过比find方法更好的是,如果查找不到子串,会抛出异常,而不是返回-1

info = 'abca'
print info.index('a')
print info.index('33')
rfind和rindex方法用法和上面一样,只是从字符串的末尾开始查找。
  • python中reverse一个字符串
>>> 'hello world'[::-1]
'dlrow olleh'

It works by doing [begin:end:step] - by leaving begin and end off and specifying a step of -1, it reverses a string.
  • python中reverse与reversed函数

foo.reverse() actually reverses the elements in the container.
reversed() doesn’t actually reverse anything, it merely returns an object that can be used to iterate over the container’s elements in reverse order. If that’s what you need, it’s often faster than actually reversing the elements.


总之有什么问题,Googlestackoverflow都会给你很大的帮助。
20180826

心存念想

情不知所起,想谈谈念想。


工作很疲惫,但再疲惫晚上都可以回到自己的床,舒展他垂丧身心;生活不如意,幸得佳人伴(如果有佳人),佳人一笑抿哀愁,佳人一抱乐开怀;朝九晚五的生活平淡无奇,于是谋划着下个假期赏他壮美山河。床是你的念想,佳人是你的念想,假期是你的念想。

学生时期其实是最幸福的,作业繁重,但是心知肚明一定会有一个期限,那个期限是考试,是回家,是放假,是见到想见的人,是获得心仪的礼物,那一天虽未到来,但明知它一定会到来。学生时期的幸福,很多是确定的,是可以预见的。在准确衡量自己实力的基础上,踏踏实实努力是可以获得十足的进步;在你付出很多心血之后是真的可以得到你想要的东西。那时心存念想是一件很幸福的事,绝大多数情况下,只要这个念想不离谱,不异想天开,终有实现的那一天。

至今仍记得初中班主任在说中考成绩出来时感叹道的“几家欢乐几家愁”,那个时候,中考是那个阶段最重要的事,多数学子拥有着同一个梦想,便是笑傲考场。考生们披晨光而出,再荷月而归,追逐着自己的小小梦想。但并非每个人都可以稳定发挥或超常发挥,塞翁失马也是常有之事,纵是如此,每个人都可以确定地努力,他们心存念想,一个对于成绩的纯粹的念想。十多年后,再看那段时光,感觉并没那么重要,就像在历史长河中每段历史都显得十分渺小,但在当时,就是再真实不过、再重要无比的生活了。

毕业之后的生活,面对的多是不确定。或许某个阶段好运和好事都围着你转,或许有时又如置身无人问津的驿站。生活如波浪 ,起起伏伏,若随波逐流,心情也是阴晴不定;若乘风破浪,心情自然收放自如。

霍金说,“活着就有希望”,希望就是念想,是内心的期望,生活若无念想,便丧失了对生活的激情,很容易陷入一种很丧的状态。很多人说自己的生活毫无波澜,或者说生活如一潭死水,很大程度上与心无念想有关。心存念想,简单点来说,它可以是和煦的阳光,可以是舒畅的清风,可以是晃动的枝丫,也可以是踏青出游,是走访山川大地,是升职加薪,它可以是一切让你对明天心存期待的事。

按我的理解,生活的仪式感其实也是对生活心存念想,仪式感不一定非要像祈祷或做礼拜那样模式化,生活的仪式感更多的像是享受当下的愉悦,不一定要多庄重,只要让自己处于一个很舒服的状态,很享受现在,于是会在心里默默播种下这种快乐,告诉自己下一次也会像现在这般幸福,内心预见到下一次也会得到这种快乐,于是生活的仪式感无形之中是为内心存了一个念想。

念想是微光,这微光足以让你迈出一小步。

20180819

生活小恬淡

坐在球场边,夕阳染红了天空,运动场上满是燃烧着的汗水和激情,一瞬之间,那个想法涌入我心头,你所看到的不是我看到的,你所听到的不是我听到的。片刻之间好像突然间洞悉了之前的好多事。

我在沙漠中为大漠孤烟直心生震撼,拍了照发给你,你在你所在之地方也许百无聊赖;我在山谷间为鸟鸣山更幽流连忘返,录了视频给你,你在你所在之地可能心绪惆怅。我把盛满爱的礼物送给你,自觉一片赤诚之心不可能打动不了你,而我不知道你想要的仅仅是一种在意和关心,是关心你说过的每一个细节。依我目前拙见,爱情之中矛盾源头无非尊重、平等与关心。

联想到现在的朋友圈,朋友圈是什么呢?是记录、是炫耀还是分享美好?那为什么很多人的朋友圈会很不招人喜欢呢?因为那多的是炫耀,是一种高高在上的优越感,而在一个人人平等的社会里,每个人的生活都值得记录,这也是快手短视频等平台火爆的原因之一。每个人在看待事物时都带有自己的阅历,所看所听很少是纯粹只看只听而不联想,于是内心便有了一种对比,幸福感不在对比中产生。那为何很多人的朋友圈看起来很舒服呢?两个关键词,真诚、尊重。

“泻水置平地,各自东西南北流;人生亦有命,安能行叹复坐愁”,而水能载舟,亦能覆舟,你是水或是舟无关紧要,重要的是你找准自己的定位。水,可行使善利万物而不争的权利;舟,必须知道水的不可或缺性并对水报之以尊重。你渴了,想喝水,拿了一个水杯请求帮助,如果你的水杯摆得太高,比水壶都高,你是不可能喝得着水,水杯请求水壶的帮助,一定是比水壶的姿态要低,当水杯请求水壶帮助时,水壶的势能自然是比水杯大的,像极了生活中的很多场合。

如果生活只有一味,我愿给她真。

20180818

优美的忧伤穿越而来

今夜月色很美,清爽的小风慢慢袭来,繁星密密麻麻,弯弯的月亮彷佛悬在云层之上,沿着安静的路漫步,月光渐渐拉长身影,一个如痴如醉的夜晚,不诉凄凉,不诉离别,夜色和着微风弥散了衷肠,我觉得这样的夜再美不过。


而如今当我翻起数年前高中语文课本上阮籍的一首古诗,只想感叹一句,这才真叫优美。

夜中不能寐,起坐弹鸣琴。
薄帷鉴明月,清风吹我襟。
孤鸿号外野,翔鸟鸣北林。
徘徊将何见,忧思独伤心。

这首诗是阮籍咏怀八十二首中的一首,深深为之动容,潸然泪下也不为过。
从文字中想象当时阮籍的场景,躺在床上好久却怎么也睡不着,索性坐起来弹琴,不想诉说自己的忧伤。月光透过帘子,若隐若现;清风吹着衣服,忽起忽落。孤鸿在野外哀号,鸟儿在北林惊鸣。此刻徘徊能看到什么呢,无非是独自伤心、黯然神伤。
我把自己想象成阮籍,此情此景,我有多忧伤,却把忧伤抒发得这么优美。

是的,总有些优美会穿越时光而来,比如这种优美的情感,比如蕴藏于文字背后的情境。


这是一个理想主义的夜晚,我在这样一个“遥遥万里辉,荡荡空中景”的夜晚写下这些,轻飘飘。
20180815

看见李健,看见智慧

看见李健,看见智慧

今年的中国好声音重新认识李健,幽默、睿智。
遂去了解他的成长史。
清华才子,理工男学霸。

看了李健2015年四大高校健谈会四场讲座,清华、成电、人大、哈工大,每场讲座爆满,每场讲座或者说分享会都是即兴演讲、即兴表达,但内容重合的很少。他不是一个专业的讲者,只是腹有诗书气自华,分享的内容颇具智慧,有些智慧是我已经领悟到的,也有正在领悟和实践的。看他走过的历程会发现,他是一个把自己保护得很好的创作者,他坚持自我,有一套自己的生活哲学,有很多很多值得学习的地方。

总结了些健哥的智慧,没有也不必要拉开赘述,每个主题背后留给自己思考。

  • 专注——专注于做一两件事或只做一件事;忘我
  • 不过分高估自己
  • 专注于某件事一定会受非议,真正的专注是心里面逐渐成长起来的自信,是可以抵抗外界干扰的强厚的抵挡
  • 专注——自我强大、与自己相处、聆听自己内心的声音
  • 专注你擅长的事——擅长
  • 不摇摆——坚持自我,或许是异类
  • 变与不变——难把握
  • 精神生活——并非每个人必须的,生存还是第一位;结合社会现状
  • 找到属于自己生活的乐趣
  • 迷惘——自我认知的开始
  • 欣赏有技术的人、欣赏手艺人——夸夸其谈的大话随处可见、宏观的观点也随处可见
  • 大学是最好的积淀时期——校园生活短暂,却是储备的最好时期,毕业以后来不及
  • 很多讲座就是心灵鸡汤,毫无意义——批评却不指名道姓,因为他很多朋友就是这样
  • 在竞争大的环境里磨练
  • 老人的经验未必有用——需要去验证,很多都是适用于自己,也许是那个时代专属的
  • 专注力的训练——强迫自己、管理手机、网络;长期坚持才有效果
  • 爱好+天赋+专注——深层次的快乐
  • 真正的智慧来源于生活
  • 每个人的能力都是有限的——纷繁的时代里适当舍弃;诱惑太多
  • 真正发展的是有技术的人
  • 每个人最重要的是拥有自己喜欢的生活
  • 寻找只属于自己的生活——拥有自己的乐趣、沉静下来、把自己的生活经营得津津乐道
  • 青春——一定是纯色的,不管是纯绿色、纯黄色还是纯什么色;纯粹;赤子之心
  • 涵养——读的作品;马尔克斯;村上春树的生活状态
  • 每种作品都有受众——不为他人改变自己初衷

20180809

SPM12–batch批量预处理数据

实现的代码如下:
code.m
% By - Galory  Email - 996377370a@gmail.com

% List of open inputs

global sub type
% My files are named as 1 2 3 4 5 6 7 8 9 10
type={'1' '2' '3' '4' '5' '6' '7' '8' '9' '10'};

for i=1:length(type)
    sub = i;


nrun = 1; % enter the number of runs here
jobfile = {'C:\Users\xuwhe\Desktop\pre_fmri\files\batch\code_job.m'};
jobs = repmat(jobfile, 1, nrun);
inputs = cell(0, nrun);
for crun = 1:nrun
end
spm('defaults','fmri');
spm_jobman('run',jobs,inputs{:});
end
code_job.m
%-----------------------------------------------------------------------
% Job saved on 31-Jul-2018 16:26:14 by cfg_util (rev $Rev: 6460 $)
% spm SPM - SPM12 (6906)
% cfg_basicio BasicIO - Unknown
%-----------------------------------------------------------------------

global type sub

inputpath=['C:\Users\xuwhe\Desktop\pre_fmri\data_batch\1dicom\' num2str(sub)];
outputpath =['C:\Users\xuwhe\Desktop\pre_fmri\data_batch\1dicom\' num2str(sub) '\output'];

%选取raw data
pathname1=[inputpath '\0002\'];
sdir1=dir([pathname1,'*.IMA']);%选取IMA
for i=1:length(sdir1)
    imgfile1{i,1}=[pathname1 sdir1(i).name];
end

%选取raw data
pathname2=[inputpath '\0003\'];
sdir2=dir([pathname2,'*.IMA']);%选取IMA
for i=1:length(sdir2)
    imgfile2{i,1}=[pathname2 sdir2(i).name];
end

%选取raw data
pathname3=[inputpath '\0004\'];
sdir3=dir([pathname3,'*.IMA']);%选取IMA
for i=1:length(sdir3)
    imgfile3{i,1}=[pathname3 sdir3(i).name];
end

%选取raw data
pathnameT1=[inputpath '\0005\'];
sdirT1=dir([pathnameT1,'*.IMA']);%选取IMA
for i=1:length(sdirT1)
    imgfileT1{i,1}=[pathnameT1 sdirT1(i).name];
end


%%
matlabbatch{1}.spm.util.import.dicom.data = imgfile1
%%
matlabbatch{1}.spm.util.import.dicom.root = 'flat';
matlabbatch{1}.spm.util.import.dicom.outdir = {[outputpath '\RUN1\']};
matlabbatch{1}.spm.util.import.dicom.protfilter = '.*';
matlabbatch{1}.spm.util.import.dicom.convopts.format = 'nii';
matlabbatch{1}.spm.util.import.dicom.convopts.icedims = 0;
%%
matlabbatch{2}.spm.util.import.dicom.data = imgfile2
%%
matlabbatch{2}.spm.util.import.dicom.root = 'flat';
matlabbatch{2}.spm.util.import.dicom.outdir = {[outputpath '\RUN2\']};
matlabbatch{2}.spm.util.import.dicom.protfilter = '.*';
matlabbatch{2}.spm.util.import.dicom.convopts.format = 'nii';
matlabbatch{2}.spm.util.import.dicom.convopts.icedims = 0;
%%
matlabbatch{3}.spm.util.import.dicom.data = imgfile3
%%
matlabbatch{3}.spm.util.import.dicom.root = 'flat';
matlabbatch{3}.spm.util.import.dicom.outdir = {[outputpath '\RUN3\']};
matlabbatch{3}.spm.util.import.dicom.protfilter = '.*';
matlabbatch{3}.spm.util.import.dicom.convopts.format = 'nii';
matlabbatch{3}.spm.util.import.dicom.convopts.icedims = 0;
%%
matlabbatch{4}.spm.util.import.dicom.data = imgfileT1
%%
matlabbatch{4}.spm.util.import.dicom.root = 'flat';
matlabbatch{4}.spm.util.import.dicom.outdir = {[outputpath '\T1\']};
matlabbatch{4}.spm.util.import.dicom.protfilter = '.*';
matlabbatch{4}.spm.util.import.dicom.convopts.format = 'nii';
matlabbatch{4}.spm.util.import.dicom.convopts.icedims = 0;
matlabbatch{5}.spm.temporal.st.scans{1}(1) = cfg_dep('DICOM Import: Converted Images', substruct('.','val', '{}',{1}, '.','val', '{}',{1}, '.','val', '{}',{1}, '.','val', '{}',{1}), substruct('.','files'));
matlabbatch{5}.spm.temporal.st.scans{2}(1) = cfg_dep('DICOM Import: Converted Images', substruct('.','val', '{}',{2}, '.','val', '{}',{1}, '.','val', '{}',{1}, '.','val', '{}',{1}), substruct('.','files'));
matlabbatch{5}.spm.temporal.st.scans{3}(1) = cfg_dep('DICOM Import: Converted Images', substruct('.','val', '{}',{3}, '.','val', '{}',{1}, '.','val', '{}',{1}, '.','val', '{}',{1}), substruct('.','files'));
matlabbatch{5}.spm.temporal.st.nslices = 33;
matlabbatch{5}.spm.temporal.st.tr = 2;
matlabbatch{5}.spm.temporal.st.ta = 1.93939393939394;
matlabbatch{5}.spm.temporal.st.so = [1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32];
matlabbatch{5}.spm.temporal.st.refslice = 33;
matlabbatch{5}.spm.temporal.st.prefix = 'a';
matlabbatch{6}.spm.spatial.realign.estwrite.data{1}(1) = cfg_dep('Slice Timing: Slice Timing Corr. Images (Sess 1)', substruct('.','val', '{}',{5}, '.','val', '{}',{1}, '.','val', '{}',{1}), substruct('()',{1}, '.','files'));
matlabbatch{6}.spm.spatial.realign.estwrite.data{2}(1) = cfg_dep('Slice Timing: Slice Timing Corr. Images (Sess 2)', substruct('.','val', '{}',{5}, '.','val', '{}',{1}, '.','val', '{}',{1}), substruct('()',{2}, '.','files'));
matlabbatch{6}.spm.spatial.realign.estwrite.data{3}(1) = cfg_dep('Slice Timing: Slice Timing Corr. Images (Sess 3)', substruct('.','val', '{}',{5}, '.','val', '{}',{1}, '.','val', '{}',{1}), substruct('()',{3}, '.','files'));
matlabbatch{6}.spm.spatial.realign.estwrite.eoptions.quality = 0.9;
matlabbatch{6}.spm.spatial.realign.estwrite.eoptions.sep = 4;
matlabbatch{6}.spm.spatial.realign.estwrite.eoptions.fwhm = 5;
matlabbatch{6}.spm.spatial.realign.estwrite.eoptions.rtm = 1;
matlabbatch{6}.spm.spatial.realign.estwrite.eoptions.interp = 2;
matlabbatch{6}.spm.spatial.realign.estwrite.eoptions.wrap = [0 0 0];
matlabbatch{6}.spm.spatial.realign.estwrite.eoptions.weight = '';
matlabbatch{6}.spm.spatial.realign.estwrite.roptions.which = [2 1];
matlabbatch{6}.spm.spatial.realign.estwrite.roptions.interp = 4;
matlabbatch{6}.spm.spatial.realign.estwrite.roptions.wrap = [0 0 0];
matlabbatch{6}.spm.spatial.realign.estwrite.roptions.mask = 1;
matlabbatch{6}.spm.spatial.realign.estwrite.roptions.prefix = 'r';
matlabbatch{7}.spm.spatial.coreg.estimate.ref(1) = cfg_dep('DICOM Import: Converted Images', substruct('.','val', '{}',{4}, '.','val', '{}',{1}, '.','val', '{}',{1}, '.','val', '{}',{1}), substruct('.','files'));
matlabbatch{7}.spm.spatial.coreg.estimate.source(1) = cfg_dep('Realign: Estimate & Reslice: Mean Image', substruct('.','val', '{}',{6}, '.','val', '{}',{1}, '.','val', '{}',{1}, '.','val', '{}',{1}), substruct('.','rmean'));
matlabbatch{7}.spm.spatial.coreg.estimate.other(1) = cfg_dep('Realign: Estimate & Reslice: Resliced Images (Sess 1)', substruct('.','val', '{}',{6}, '.','val', '{}',{1}, '.','val', '{}',{1}, '.','val', '{}',{1}), substruct('.','sess', '()',{1}, '.','rfiles'));
matlabbatch{7}.spm.spatial.coreg.estimate.other(2) = cfg_dep('Realign: Estimate & Reslice: Resliced Images (Sess 2)', substruct('.','val', '{}',{6}, '.','val', '{}',{1}, '.','val', '{}',{1}, '.','val', '{}',{1}), substruct('.','sess', '()',{2}, '.','rfiles'));
matlabbatch{7}.spm.spatial.coreg.estimate.other(3) = cfg_dep('Realign: Estimate & Reslice: Resliced Images (Sess 3)', substruct('.','val', '{}',{6}, '.','val', '{}',{1}, '.','val', '{}',{1}, '.','val', '{}',{1}), substruct('.','sess', '()',{3}, '.','rfiles'));
matlabbatch{7}.spm.spatial.coreg.estimate.eoptions.cost_fun = 'nmi';
matlabbatch{7}.spm.spatial.coreg.estimate.eoptions.sep = [4 2];
matlabbatch{7}.spm.spatial.coreg.estimate.eoptions.tol = [0.02 0.02 0.02 0.001 0.001 0.001 0.01 0.01 0.01 0.001 0.001 0.001];
matlabbatch{7}.spm.spatial.coreg.estimate.eoptions.fwhm = [7 7];
matlabbatch{8}.spm.tools.oldnorm.estwrite.subj.source(1) = cfg_dep('DICOM Import: Converted Images', substruct('.','val', '{}',{4}, '.','val', '{}',{1}, '.','val', '{}',{1}, '.','val', '{}',{1}), substruct('.','files'));
matlabbatch{8}.spm.tools.oldnorm.estwrite.subj.wtsrc = '';
matlabbatch{8}.spm.tools.oldnorm.estwrite.subj.resample(1) = cfg_dep('Coregister: Estimate: Coregistered Images', substruct('.','val', '{}',{7}, '.','val', '{}',{1}, '.','val', '{}',{1}, '.','val', '{}',{1}), substruct('.','cfiles'));
matlabbatch{8}.spm.tools.oldnorm.estwrite.eoptions.template = {'D:\software\neuroscience\Matlab2016b\toolbox\spm12\toolbox\OldNorm\T1.nii,1'};
matlabbatch{8}.spm.tools.oldnorm.estwrite.eoptions.weight = '';
matlabbatch{8}.spm.tools.oldnorm.estwrite.eoptions.smosrc = 8;
matlabbatch{8}.spm.tools.oldnorm.estwrite.eoptions.smoref = 0;
matlabbatch{8}.spm.tools.oldnorm.estwrite.eoptions.regtype = 'mni';
matlabbatch{8}.spm.tools.oldnorm.estwrite.eoptions.cutoff = 25;
matlabbatch{8}.spm.tools.oldnorm.estwrite.eoptions.nits = 16;
matlabbatch{8}.spm.tools.oldnorm.estwrite.eoptions.reg = 1;
matlabbatch{8}.spm.tools.oldnorm.estwrite.roptions.preserve = 0;
matlabbatch{8}.spm.tools.oldnorm.estwrite.roptions.bb = [-78 -112 -70
                                                         78 76 85];
matlabbatch{8}.spm.tools.oldnorm.estwrite.roptions.vox = [2 2 2];
matlabbatch{8}.spm.tools.oldnorm.estwrite.roptions.interp = 1;
matlabbatch{8}.spm.tools.oldnorm.estwrite.roptions.wrap = [0 0 0];
matlabbatch{8}.spm.tools.oldnorm.estwrite.roptions.prefix = 'w';
matlabbatch{9}.spm.spatial.smooth.data(1) = cfg_dep('Old Normalise: Estimate & Write: Normalised Images (Subj 1)', substruct('.','val', '{}',{8}, '.','val', '{}',{1}, '.','val', '{}',{1}, '.','val', '{}',{1}), substruct('()',{1}, '.','files'));
matlabbatch{9}.spm.spatial.smooth.fwhm = [8 8 8];
matlabbatch{9}.spm.spatial.smooth.dtype = 0;
matlabbatch{9}.spm.spatial.smooth.im = 0;
matlabbatch{9}.spm.spatial.smooth.prefix = 's';
注意事项:以上代码是基于我的文件结构,因为这批数据有三个session,所以有三个RUN文件夹。具体的用SPM12生成batch会在另一篇博文继续更新。
image.png
image.png
image.png
参考网址:

20180731