作者 | 天元浪子
来源 | CSDN博客
手头有 109 张头部 CT 的断层扫描图片,我打算用这些图片尝试头部的三维重建。基础工作之一,就是要把这些图片数据读出来,组织成一个三维的数据结构(实际上是四维的,因为每个像素有 RGBA 四个通道)。
这个数据结构,自然是 numpy 的 ndarray 对象,读取图像文件我习惯使用 PIL。因此,需要导入两个模块:
1
import
numpy
as
np
2
from
PIL
import
Image
接下来,我用一行代码就把 109 张图片读到了一个 109x256x256x4 的 numpy 数组中,耗时 172 毫秒:
1
data
= np.stack([np.array(Image.
open
(
'head%d.png'
%i))
for
i
in
range(
109
)], axis=
0
)
通常,上面这一行代码应该写成这样:
1
data = list()
2
for i in range(109):
3
img = Image.open('head%d.png'%i)
4
img = np.array(img)
5
data.append(img)
6
data = np.stack(data, axis=0)
我把这些代码写成一行,却毫无晦涩艰深之感,仍然像诗歌一样优美、像自然语言一样通俗!
那一刻,我脑洞大开,很想知道 python 高手们只用一行代码都能干些什么?当然,限定条件是不能引用自定义的模块,可以使用内置模块或通用的第三方模块。上网一搜,发现这个问题好像是 python 的专属问题,其他语言很难用一行代码做点什么。知乎上有一篇名为《一行 Python 能实现什么丧心病狂的功能?》(https://www.zhihu.com/question/37046157)的帖子,其镜像贴只有 java 的和 js 的,点进去发现,和 python 的完全不是一个概念。
整理了一下知乎上这篇文章的内容,颇觉有趣,分享给大家。
1. 一行代码打印乘法口诀
1print('\n'.join([' '.join(["%2s x%2s = %2s"%(j,i,i*j) for j in range(1,i+1)]) for i in range(1,10)]))
'\n'
.
join
([
' '
.
join
([
"%2s x%2s = %2s"
%(j,i,i*j)
for
j
in
range
(
1
,i+
1
)])
for
i
in
range
(
1
,
10
)]))
2. 一行代码打印迷宫
1 print ( '' .join(__import__( 'random' ).choice( '\u2571\u2572' ) for i in range(50*24)))
3. 一行代码表白爱情
1
print
(
'\n'
.join([
''
.join([(
'Love'
[(x-y) %
len
(
'Love'
)]
if
((x*
0.05
)**
2
+(y*
0.1
)**
2-1
)**
3
-(x*
0.05
)**
2
*(y*
0.1
)**
3
<=
0
else
' '
)
for
x
in
range(
-30
,
30
)])
for
y
in
range(
30
,
-30
,
-1
)]))
4. 一行代码打印小龟龟
1
print(
'\n'
.join([
''
.join([
'*'
if
abs((
lambda
a:
lambda
z,c,n:a(a,z,c,n))(
lambda
s,z,c,n:z
if
n==
0
else
s(s,z*z+c,c,n
-1
))(
0
,
0.02
*x+
0.05j
*y,
40
))<
2
else
' '
for
x
in
range(
-80
,
20
)])
for
y
in
range(
-20
,
20
)]))
你在 Python 使用过程中用一行代码实现过哪些激动人心的功能呢?欢迎留言讨论。
原文链接:
https://blog.csdn.net/xufive/article/details/96475103
(*本文为 AI科技大本营转载文章,转载请联系原作者 )
◆
精彩推荐
◆
“只讲技术,拒绝空谈 ! ”2019 AI开发者大会将于9月6日-7日在北京举行,这一届AI开发者大会有哪些亮点?一线公司的大牛们都在关注什么?AI行业的风向是什么?2019 AI开发者大会,倾听大牛分享,聚焦技术实践,和万千开发者共成长。 目前,大会早鸟票抢购中~扫码购票,领先一步!
推荐阅读
-
阿里达摩院做AI这两 年
-
性能比GPU高100倍 !华人教授研发全球首个可编程忆阻器AI计算
-
豪投10亿!华为放话:3年培养100万AI人才!网友神回应了
-
《长安十二时辰》教了哪些算法知识?
-
非科班出身程序员,如何超越科班程序员?
-
谷歌停止中国版搜索引擎;李楠宣布离职魅族;微软用 Rust 替代 C/C++ | 极客头条
-
首批8款5G手机获3C认证: 华为占4款; IBM获AT&T“几十亿美元”云计算合同; 马库斯: 未来薪酬将以Libra发放
-
用50年前NASA送阿波罗上天的计算机挖矿什么体验? 出一个块要10^18年……