作者 |?? 天元浪子
來(lái)源 | CSDN博客
手頭有 109 張頭部 CT 的斷層掃描圖片,我打算用這些圖片嘗試頭部的三維重建。基礎(chǔ)工作之一,就是要把這些圖片數(shù)據(jù)讀出來(lái),組織成一個(gè)三維的數(shù)據(jù)結(jié)構(gòu)(實(shí)際上是四維的,因?yàn)槊總€(gè)像素有 RGBA 四個(gè)通道)。
這個(gè)數(shù)據(jù)結(jié)構(gòu),自然是 numpy 的 ndarray 對(duì)象,讀取圖像文件我習(xí)慣使用 PIL。因此,需要導(dǎo)入兩個(gè)模塊:
1
import
?numpy?
as
?np
2
from
?PIL?
import
?Image
接下來(lái),我用一行代碼就把 109 張圖片讀到了一個(gè) 109x256x256x4 的 numpy 數(shù)組中,耗時(shí) 172 毫秒:
1
data
?=?np.stack([np.array(Image.
open
(
'head%d.png'
%i))?
for
?i?
in
?range(
109
)],?axis=
0
)
通常,上面這一行代碼應(yīng)該寫(xiě)成這樣:
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)
我把這些代碼寫(xiě)成一行,卻毫無(wú)晦澀艱深之感,仍然像詩(shī)歌一樣優(yōu)美、像自然語(yǔ)言一樣通俗!
那一刻,我腦洞大開(kāi),很想知道 python 高手們只用一行代碼都能干些什么?當(dāng)然,限定條件是不能引用自定義的模塊,可以使用內(nèi)置模塊或通用的第三方模塊。上網(wǎng)一搜,發(fā)現(xiàn)這個(gè)問(wèn)題好像是 python 的專(zhuān)屬問(wèn)題,其他語(yǔ)言很難用一行代碼做點(diǎn)什么。知乎上有一篇名為《一行 Python 能實(shí)現(xiàn)什么喪心病狂的功能?》(https://www.zhihu.com/question/37046157)的帖子,其鏡像貼只有 java 的和 js 的,點(diǎn)進(jìn)去發(fā)現(xiàn),和 python 的完全不是一個(gè)概念。
整理了一下知乎上這篇文章的內(nèi)容,頗覺(jué)有趣,分享給大家。
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. 一行代碼表白愛(ài)情
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 使用過(guò)程中用一行代碼實(shí)現(xiàn)過(guò)哪些激動(dòng)人心的功能呢?歡迎留言討論。
原文鏈接:
https://blog.csdn.net/xufive/article/details/96475103
(*本文為 AI科技大本營(yíng)轉(zhuǎn)載文章,轉(zhuǎn)載請(qǐng)聯(lián)系原作者 )
◆
精彩推薦
◆
“只講技術(shù),拒絕空談 ! ”2019 AI開(kāi)發(fā)者大會(huì)將于9月6日-7日在北京舉行,這一屆AI開(kāi)發(fā)者大會(huì)有哪些亮點(diǎn)?一線(xiàn)公司的大牛們都在關(guān)注什么?AI行業(yè)的風(fēng)向是什么?2019 AI開(kāi)發(fā)者大會(huì),傾聽(tīng)大牛分享,聚焦技術(shù)實(shí)踐,和萬(wàn)千開(kāi)發(fā)者共成長(zhǎng)。 目前,大會(huì)早鳥(niǎo)票搶購(gòu)中~掃碼購(gòu)票,領(lǐng)先一步!
推薦閱讀
-
阿里達(dá)摩院做AI這兩 年
-
性能比GPU高100倍 !華人教授研發(fā)全球首個(gè)可編程憶阻器AI計(jì)算
-
豪投10億!華為放話(huà):3年培養(yǎng)100萬(wàn)AI人才!網(wǎng)友神回應(yīng)了
-
《長(zhǎng)安十二時(shí)辰》教了哪些算法知識(shí)?
-
非科班出身程序員,如何超越科班程序員?
-
谷歌停止中國(guó)版搜索引擎;李楠宣布離職魅族;微軟用 Rust 替代 C/C++ | 極客頭條
-
首批8款5G手機(jī)獲3C認(rèn)證: 華為占4款; IBM獲AT&T“幾十億美元”云計(jì)算合同; 馬庫(kù)斯: 未來(lái)薪酬將以L(fǎng)ibra發(fā)放
-
用50年前NASA送阿波羅上天的計(jì)算機(jī)挖礦什么體驗(yàn)? 出一個(gè)塊要10^18年……

更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
