Numpy基礎(chǔ)知識

數(shù)據(jù)類型

1.數(shù)據(jù)類型之間的轉(zhuǎn)換

  • 5種基本類型:bool赁豆、int、uint冗美、float魔种、復(fù)數(shù)。
  • int32代表32位整型
  • 在創(chuàng)建時(shí)指定類型的兩種方式粉洼,直接類型 or 類型字符节预。
    astype 改變數(shù)組的類型
    直接a.dtype獲取數(shù)組類型
>>> import numpy as np
>>> a=np.arange(12,dtype=float)
>>> a
array([ 0.,  1.,  2.,  3.,  4.,  5.,  6.,  7.,  8.,  9., 10., 11.])
>>> a=np.arange(12,dtype='i')
>>> a
array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11], dtype=int32)
>>> a.dtype
dtype('int32')
>>> a.astype('float')
array([ 0.,  1.,  2.,  3.,  4.,  5.,  6.,  7.,  8.,  9., 10., 11.])

2.數(shù)組標(biāo)量

  • NumPy通常將數(shù)組元素作為數(shù)組標(biāo)量返回(帶有關(guān)聯(lián)dtype的標(biāo)量

3.溢出錯(cuò)誤

  • 當(dāng)值需要比數(shù)據(jù)類型中的可用內(nèi)存更多的內(nèi)存時(shí)叶摄,NumPy數(shù)值類型的固定大小可能會導(dǎo)致溢出錯(cuò)誤
#100的8次方超出32位存儲空間
>>> np.power(100, 8, dtype=np.int64)
10000000000000000
>>> np.power(100, 8, dtype=np.int32)
1874919424
  • Python中的int大小是靈活的,不會溢出安拟。
  • Numpy提供numpy.iinfo和numpy.finfo驗(yàn)證NumPy整數(shù)和浮點(diǎn)值的最小值或最大值
>>> np.finfo(float)
finfo(resolution=1e-15, min=-1.7976931348623157e+308, max=1.7976931348623157e+308, dtype=float64)
>>> np.iinfo(int)
iinfo(min=-2147483648, max=2147483647, dtype=int32)
>>> np.iinfo(np.int64)
iinfo(min=-9223372036854775808, max=9223372036854775807, dtype=int64)

如果64位整數(shù)仍然太小蛤吓,則結(jié)果可能會轉(zhuǎn)換為浮點(diǎn)數(shù)。浮點(diǎn)數(shù)提供了更大但不精確的可能值范圍糠赦。
np.power(100,100,dtype=np.float64)

擴(kuò)展精度

  • 為了有效地進(jìn)行內(nèi)存的校準(zhǔn)会傲,np.longdouble通常以零位進(jìn)行填充,即96或者128位拙泽, 哪個(gè)更有效率取決于硬件和開發(fā)環(huán)境淌山;通常在32位系統(tǒng)上它們被填充到96位,而在64位系統(tǒng)上它們通常被填充到128位顾瞻。
  • 盡管它們的名稱是這樣叫的, 但是np.float96和np.float128只提供與np.longdouble一樣的精度, 即大多數(shù)x86機(jī)器上的80位和標(biāo)準(zhǔn)Windows版本中的64位泼疑。

創(chuàng)建數(shù)組

1. 從其他Python結(jié)構(gòu)(例如,列表荷荤,元組)轉(zhuǎn)換

>>> a=np.array((1,2,3,4))
>>> a
array([1, 2, 3, 4])
>>> b=np.array([5,6,2])
>>> b
array([5, 6, 2])
>>> c = np.array([[1,2],(3,4)])
>>> c
array([[1, 2],
       [3, 4]])

2. numpy原生數(shù)組的創(chuàng)建(例如王浴,arange、ones梅猿、zeros等)

np.zeros((n,m)) 填充0
np.ones((n,m))  填充1
#n,m代表數(shù)組的形狀
np.linspace(n,m,p)
n為開始氓辣,p為結(jié)束,m為個(gè)數(shù)

3. 從磁盤讀取數(shù)組袱蚓,無論是標(biāo)準(zhǔn)格式還是自定義格式

  • 使用 numpy.fromfile() 函數(shù)和 .tofile() 方法直接讀取和寫入numpy數(shù)組

4. 通過使用字符串或緩沖區(qū)從原始字節(jié)創(chuàng)建數(shù)組

5. 使用特殊庫函數(shù)(例如钞啸,random)

Numpy輸入與輸出

使用genfromtxt導(dǎo)入數(shù)據(jù)

  • genfromtxt執(zhí)行兩個(gè)主要的循環(huán)。第一個(gè)循環(huán)以字符串序列轉(zhuǎn)換文件的每一行喇潘。第二個(gè)循環(huán)將每個(gè)字符串轉(zhuǎn)換為適當(dāng)?shù)臄?shù)據(jù)類型

定義輸入

  • 唯一強(qiáng)制參數(shù)是數(shù)據(jù)的來源

將行拆分為列

delimiter為None的時(shí)候体斩,按制表符分割

>>> from io import BytesIO
>>> data = b"1,2,3\n4,5,6"
>>> np.genfromtxt(BytesIO(data),delimiter=",")
array([[1., 2., 3.],
       [4., 5., 6.]])
>>> data=b"     1       2       2"
>>> np.genfromtxt(BytesIO(data),delimiter=None)
array([1., 2., 2.])
  • delimiter為整數(shù)或數(shù)組時(shí),可以規(guī)定輸出的數(shù)組中每個(gè)列的寬度
>>> data=b"12345\n  3 4\n56  7"
>>> np.genfromtxt(BytesIO(data),delimiter=(3,2))
array([[123.,  45.],
       [  3.,   4.],
       [ 56.,   7.]])
#數(shù)組第一列寬為3颖低,第二列寬為2
  • autostrip參數(shù)絮吵,為True時(shí)可消除每個(gè)元素的前導(dǎo)空白和尾隨空白
  • comments可用于定義標(biāo)記注釋開始的字符串。默認(rèn)情況下為#
>>> data=b"""#
... #comment
... #comment
... 1.2
... 3.4
... 5.6
... #commeng
... """
>>> np.genfromtxt(BytesIO(data),delimiter='.',comments="#")
array([[1., 2.],
       [3., 4.],
       [5., 6.]])
  • skip_header(n)和skip_footer(n)分別代表從頭部和尾部跳過n個(gè)行
>>> data = "\n".join(str(i) for i in range(10))
>>> np.genfromtxt(BytesIO(data),)
array([ 0.,  1.,  2.,  3.,  4.,  5.,  6.,  7.,  8.,  9.])
>>> np.genfromtxt(BytesIO(data),
...               skip_header=3, skip_footer=5)
array([ 3.,  4.])
  • usecols參數(shù)忱屑,截取部分列
>>> data = "1 2 3\n4 5 6"
>>> np.genfromtxt(BytesIO(data), usecols=(0, -1))
array([[ 1.,  3.],
       [ 4.,  6.]])
#獲取第一列和最后一列

設(shè)置名稱

  • names參數(shù)蹬敲,給列指定名稱,可以用對應(yīng)的列名來用usecols選出列莺戒。
>>> data=b"1 2 3\n4 5 6"
>>> np.genfromtxt(BytesIO(data),names="a,b,c",usecols=("a","c"))
array([(1., 3.), (4., 6.)], dtype=[('a', '<f8'), ('c', '<f8')])
>>> np.genfromtxt(BytesIO(data),usecols=(0,-1))
array([[1., 3.],
       [4., 6.]])
  • 從數(shù)據(jù)本身定義列名伴嗡,使用names關(guān)鍵字的值為True。這些名字將從第一行(在skip_header之后)被讀取从铲。
  • 在函數(shù)中names參數(shù)具有最高優(yōu)先級瘪校,優(yōu)于其他方式定義的名稱
  • defaultfmt參數(shù)
    當(dāng)names為None,默認(rèn)為f0,f1等等阱扬∑茫或names不夠時(shí),也是如此麻惶。
    defaultfmt覆蓋默認(rèn)值
    例:defaultfmt=“var_%i”
  • deletechars 刪除列表
  • excludelist 排除列表
  • case_sensitive 大小寫

選擇數(shù)據(jù)的類型

接受一個(gè)dtype參數(shù)設(shè)置數(shù)據(jù)類型

  • 一個(gè)包含兩個(gè)鍵'names'和'formats'的字典嗅定。
  • 現(xiàn)有的numpy.dtype對象。
  • 特殊值None用踩。在這種情況下,列的類型將根據(jù)數(shù)據(jù)本身確定(見下文)忙迁。
  • 以下四點(diǎn)見代碼
>>> np.genfromtxt(BytesIO(data),usecols=(0,-1),dtype=int)
array([[1, 3],
       [4, 6]])
>>> np.genfromtxt(BytesIO(data),usecols=(0,-1),dtype='i4')
array([[1, 3],
       [4, 6]])
>>> np.genfromtxt(BytesIO(data),names="a,b,c",dtype=[('a',int),('b',float)])
array([(1, 2.), (4, 5.)], dtype=[('a', '<i4'), ('b', '<f8')])
>>> np.genfromtxt(BytesIO(data),names="a,b,c",dtype=(int,float,float))
array([(1, 2., 3.), (4, 5., 6.)],
      dtype=[('a', '<i4'), ('b', '<f8'), ('c', '<f8')])

除直接的dtype=int之外脐彩,其他的返回的都是一個(gè)帶有結(jié)構(gòu)化dtype的一維數(shù)組。

調(diào)整轉(zhuǎn)換

  • converters定義轉(zhuǎn)換函數(shù)姊扔。
    converters參數(shù)必須是一個(gè)字典惠奸。
>>> data=b"1,2,3\n4,5,6\n"
>>> names="a,b,c"
>>> np.genfromtxt(BytesIO(data))
array([nan, nan])
>>> np.genfromtxt(BytesIO(data),delimiter=',')
array([[1., 2., 3.],
       [4., 5., 6.]])
>>> np.genfromtxt(BytesIO(data),delimiter=',',names=names)
array([(1., 2., 3.), (4., 5., 6.)],
      dtype=[('a', '<f8'), ('b', '<f8'), ('c', '<f8')])
>>> def func(x):
...     return '0'
...
>>> 
np.genfromtxt(BytesIO(data),delimiter=',',dtype=int,names=names,converters={'b':func})
array([(1, 0, 3), (4, 0, 6)],
      dtype=[('a', '<i4'), ('b', '<i4'), ('c', '<i4')])
  • missing_values 和filling_values分別代表丟失值和為丟失值設(shè)定的值
  • usemask,布爾掩碼恰梢,True為缺失

索引

切片索引

>>> y = np.arange(35).reshape(5,7)
>>> y
array([[ 0,  1,  2,  3,  4,  5,  6],
       [ 7,  8,  9, 10, 11, 12, 13],
       [14, 15, 16, 17, 18, 19, 20],
       [21, 22, 23, 24, 25, 26, 27],
       [28, 29, 30, 31, 32, 33, 34]])
>>> y[1:5:2,::3]
array([[ 7, 10, 13],
       [21, 24, 27]])

索引數(shù)組

>>> x = np.arange(10,1,-1)
>>> x
array([10,  9,  8,  7,  6,  5,  4,  3,  2])
>>> x[np.array([3, 3, 1, 8])]
array([7, 7, 9, 2])

索引多維數(shù)組

>>> y[np.array([0,2,4]), np.array([0,1,2])]
array([ 0, 15, 30])

在這種情況下佛南,如果索引數(shù)組具有匹配的形狀,并且索引數(shù)組的每個(gè)維度都有一個(gè)索引數(shù)組嵌言,則結(jié)果數(shù)組具有與索引數(shù)組相同的形狀

>>> y[np.array([0,2,4]), np.array([0,1])]
<type 'exceptions.ValueError'>: shape mismatch: objects cannot be
broadcast to a single shape

如果索引數(shù)組的形狀不同嗅回,則嘗試將它們廣播為相同的形狀。如果它們無法廣播到相同的形狀摧茴,則會引發(fā)異常

>>> y[np.array([0,2,4]), 1]
array([ 1, 15, 29])

廣播機(jī)制允許索引數(shù)組與其他索引的標(biāo)量組合

  • 可以僅使用索引數(shù)組對數(shù)組進(jìn)行部分索引
>>> y[np.array([0,2,4])]
array([[ 0,  1,  2,  3,  4,  5,  6],
       [14, 15, 16, 17, 18, 19, 20],
       [28, 29, 30, 31, 32, 33, 34]])

布爾或掩碼索引數(shù)組

  • 布爾數(shù)組做索引返回的是一維數(shù)組
>>> b = y>20
>>> y[b]
array([21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34])
>>> b[:,5]
array([False, False, False,  True,  True])
>>> y[b[:,5]]
array([[21, 22, 23, 24, 25, 26, 27],
       [28, 29, 30, 31, 32, 33, 34]])
#此時(shí)的b[:,5]相當(dāng)于【3绵载,4】
  • 布爾索引要和被索引數(shù)組的形狀完全相同才能索引到每一個(gè)元素。
    如果布爾索引少一個(gè)維度苛白,那么對數(shù)組進(jìn)行索引時(shí)的最小單位就上升一個(gè)維度娃豹。
>>> x
array([[[ 0,  1,  2,  3,  4],
        [ 5,  6,  7,  8,  9],
        [10, 11, 12, 13, 14]],

       [[15, 16, 17, 18, 19],
        [20, 21, 22, 23, 24],
        [25, 26, 27, 28, 29]]])
>>> a=np.array([True,True,False,True,False])
>>> a
array([ True,  True, False,  True, False])
>>> b=np.array([[a,a,a],[a,a,a]])
>>> b
array([[[ True,  True, False,  True, False],
        [ True,  True, False,  True, False],
        [ True,  True, False,  True, False]],

       [[ True,  True, False,  True, False],
        [ True,  True, False,  True, False],
        [ True,  True, False,  True, False]]])
>>> x[b]
array([ 0,  1,  3,  5,  6,  8, 10, 11, 13, 15, 16, 18, 20, 21, 23, 25, 26,
       28])

在程序中使用索引

  • slice 切片
  • Ellipsis 省略號
>>> indices = (1,1,1,1)
>>> z[indices]
40
>>> indices = (1,1,1,slice(0,2)) # same as [1,1,1,0:2]
>>> z[indices]
array([39, 40])
>>> indices = (1, Ellipsis, 1) # same as [1,...,1]
>>> z[indices]
array([[28, 31, 34],
       [37, 40, 43],
       [46, 49, 52]])

廣播

術(shù)語廣播(Broadcasting)描述了 numpy 如何在算術(shù)運(yùn)算期間處理具有不同形狀的數(shù)組

  • 當(dāng)一個(gè)數(shù)組和一個(gè)標(biāo)量值在一個(gè)操作中組合時(shí),會發(fā)生最簡單的廣播
>>> a = np.array([1.0, 2.0, 3.0])
>>> b = 2.0
>>> a * b
array([ 2.,  4.,  6.])

一般廣播規(guī)則

在兩個(gè)數(shù)組上運(yùn)行時(shí)购裙,NumPy會逐元素地比較它們的形狀懂版。它從尾隨尺寸開始,并向前發(fā)展躏率。兩個(gè)尺寸兼容時(shí)
1.他們是平等的躯畴,或者
2.其中一個(gè)是1

  • 平等的意味著
    1.有相同的形狀
    2.最外圍的元素個(gè)數(shù)相同
    例:a和b最外圍都是3個(gè)
>>> import numpy as np
>>> a=np.array([[1,2,3],[3,4,5],[5,6,7]])
>>> b=np.array([1,2,3]),
>>> a*b
array([[ 1,  4,  9],
       [ 3,  8, 15],
       [ 5, 12, 21]])
  • 各種情況
A      (2d array):  5 x 4
B      (1d array):      1
Result (2d array):  5 x 4

A      (2d array):  5 x 4
B      (1d array):      4
Result (2d array):  5 x 4

A      (3d array):  15 x 3 x 5
B      (3d array):  15 x 1 x 5
Result (3d array):  15 x 3 x 5

A      (3d array):  15 x 3 x 5
B      (2d array):       3 x 5
Result (3d array):  15 x 3 x 5

A      (3d array):  15 x 3 x 5
B      (2d array):       3 x 1
Result (3d array):  15 x 3 x 5
>>> x = np.arange(4)
>>> xx = x.reshape(4,1)
>>> y = np.ones(5)
>>> z = np.ones((3,4))
>>> x.shape
(4,)
>>> y.shape
(5,)
>>> x + y
ValueError: operands could not be broadcast together with shapes (4,) (5,)
>>> xx.shape
(4, 1)
>>> y.shape
(5,)
>>> (xx + y).shape
(4, 5)
>>> xx + y
array([[ 1.,  1.,  1.,  1.,  1.],
       [ 2.,  2.,  2.,  2.,  2.],
       [ 3.,  3.,  3.,  3.,  3.],
       [ 4.,  4.,  4.,  4.,  4.]])
>>> x.shape
(4,)
>>> z.shape
(3, 4)
>>> (x + z).shape
(3, 4)
>>> x + z
array([[ 1.,  2.,  3.,  4.],
       [ 1.,  2.,  3.,  4.],
       [ 1.,  2.,  3.,  4.]])
>>> a = np.array([0.0, 10.0, 20.0, 30.0])
>>> b = np.array([1.0, 2.0, 3.0])
>>> a[:, np.newaxis] + b
array([[  1.,   2.,   3.],
       [ 11.,  12.,  13.],
       [ 21.,  22.,  23.],
       [ 31.,  32.,  33.]])

字節(jié)交換

字節(jié)排序和ndarrays

ndarray是一個(gè)為內(nèi)存中的數(shù)據(jù)提供python數(shù)組接口的對象
  • 關(guān)于一些2字節(jié)整數(shù)與4字節(jié)整數(shù)之間的轉(zhuǎn)換之類的。
  • 更改數(shù)組dtype中的字節(jié)順序信息薇芝,以便將基礎(chǔ)數(shù)據(jù)解釋為不同的字節(jié)順序私股。這是作用 arr.newbyteorder()
  • 更改基礎(chǔ)數(shù)據(jù)的字節(jié)順序,保留dtype解釋恩掷。這是做什么的 arr.byteswap()
  • dtype參數(shù)很重要

結(jié)構(gòu)化數(shù)組

  • 結(jié)構(gòu)化數(shù)組倡鲸,ndarray。包含dtype黄娘,一個(gè)一維數(shù)組峭状,元素是元組克滴。
>>> import numpy as np
>>> x = np.array([('李棟良',22,84),('Daenerys',22,55)],
...              dtype=[('name','U10'),('age','i4'),('weight','f4')]
...
...
... )
>>> x
array([('李棟良', 22, 84.), ('Daenerys', 22, 55.)],
      dtype=[('name', '<U10'), ('age', '<i4'), ('weight', '<f4')])
>>> x[name]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'name' is not defined
>>> x['name']
array(['李棟良', 'Daenerys'], dtype='<U10')
>>> x['age']=23
>>> x
array([('李棟良', 23, 84.), ('Daenerys', 23, 55.)],
      dtype=[('name', '<U10'), ('age', '<i4'), ('weight', '<f4')])
>>> x['weight'][1]=54
>>> x
array([('李棟良', 23, 84.), ('Daenerys', 23, 54.)],
      dtype=[('name', '<U10'), ('age', '<i4'), ('weight', '<f4')])

結(jié)構(gòu)化數(shù)據(jù)類型創(chuàng)建

  • 元組列表的形式,shape是可選的
    np.dtype([('x', 'f4'), ('y', np.float32), ('z', 'f4', (2, 2))])
  • 逗號分隔优床,字段名稱被賦予默認(rèn)名稱 f0劝赔、f1等
    np.dtype('i8, f4, S3')
    dtype([('f0', '<i8'), ('f1', '<f4'), ('f2', 'S3')])
  • 字段參數(shù)組字典
    字典有兩個(gè)必需鍵 “names” 和 “format”,以及四個(gè)可選鍵 “offsets”胆敞、“itemsize”着帽、“Aligned” 和 “title”。
>>> np.dtype({'names':['A','B'],'formats':['i4','f4']})
dtype([('A', '<i4'), ('B', '<f4')])

可以通過names使用相同長度的字符串序列分配屬性來修改字段名稱移层。

dtype對象還具有類似字典的屬性仍翰,fields其鍵是字段名稱, 其值是包含每個(gè)字段的dtype和字節(jié)偏移量的元組观话。

>>> d.fields
mappingproxy({'x': (dtype('int64'), 0), 'y': (dtype('float32'), 8)})
  • 偏移量指的是內(nèi)存中的偏移予借,可以認(rèn)為指定,也可以自動偏移和對齊频蛔。
    默認(rèn)情況下(align=False)灵迫,numpy將字段打包在一起,使得每個(gè)字段從前一個(gè)字段結(jié)束的字節(jié)偏移開始晦溪,并且字段在內(nèi)存中是連續(xù)的
>>> d=np.dtype('u1,i8,f4,u2,u1,i4')
>>> d.fields
mappingproxy({'f0': (dtype('uint8'), 0), 'f1': (dtype('int64'), 1), 'f2': (dtype('float32'), 9), 'f3': (dtype('uint16'), 13), 'f4': (dtype('uint8'), 15), 'f5': (dtype('int32'), 16)})
>>> [d.fields[name][1] for name in d.names]
[0, 1, 9, 13, 15, 16]
  • 如果align=True設(shè)置了瀑粥,numpy將以與許多C編譯器填充C結(jié)構(gòu)相同的方式填充結(jié)構(gòu)
>>> d=np.dtype('u1,i8,f4,u2,u1,i4',align=True)
>>> [d.fields[name][1] for name in d.names]
[0, 8, 16, 20, 22, 24]

索引和分配給結(jié)構(gòu)化數(shù)組

  • 使用元組賦值
  • 使用標(biāo)量賦值,會將標(biāo)量分配給所有字段
>>> x=np.array(2,dtype='i4,u1')
>>> x
array((2, 2), dtype=[('f0', '<i4'), ('f1', 'u1')])
  • 來自其他結(jié)構(gòu)化數(shù)組的賦值是可以的三圆。但是具有不同數(shù)量的字段的結(jié)構(gòu)化數(shù)組不能彼此分配

索引

  • 使用名稱索引和修改
  • 訪問的字段是子數(shù)組利凑,則子數(shù)組的維度將附加到結(jié)果的形狀
>>> x = np.zeros((2, 2), dtype=[('a', np.int32), ('b', np.float64, (3, 3))])
>>> x
array([[(0, [[0., 0., 0.], [0., 0., 0.], [0., 0., 0.]]),
        (0, [[0., 0., 0.], [0., 0., 0.], [0., 0., 0.]])],
       [(0, [[0., 0., 0.], [0., 0., 0.], [0., 0., 0.]]),
        (0, [[0., 0., 0.], [0., 0., 0.], [0., 0., 0.]])]],
      dtype=[('a', '<i4'), ('b', '<f8', (3, 3))])
>>> x['a'].shape
(2, 2)
>>> x['b'].shape
(2, 2, 3, 3)
  • 結(jié)構(gòu)化數(shù)組中的名稱可看作列名
>>> a=np.zeros(3)
>>> a
array([0., 0., 0.])
>>> a=np.zeros(3, dtype=[('a', 'i4'), ('b', 'i4'), ('c', 'f4')])
>>> a
array([(0, 0, 0.), (0, 0, 0.), (0, 0, 0.)],
      dtype=[('a', '<i4'), ('b', '<i4'), ('c', '<f4')])
>>> a[['a','c']]
array([(0, 0.), (0, 0.), (0, 0.)],
      dtype={'names':['a','c'], 'formats':['<i4','<f4'], 'offsets':[0,8], 'itemsize':12})
  • 使用整數(shù)進(jìn)行索引獲得結(jié)構(gòu)化標(biāo)量,獲得的結(jié)構(gòu)化標(biāo)量也像視圖一樣嫌术,進(jìn)行修改會修改原數(shù)組

結(jié)構(gòu)比較

>>> a=np.ones(2,dtype='i4,u1')
>>> a
array([(1, 1), (1, 1)], dtype=[('f0', '<i4'), ('f1', 'u1')])
>>> b=np.ones(2,dtype='i4,u1')
>>> a==b
array([ True,  True])

記錄數(shù)組

  • 記錄數(shù)組允許暗屬性訪問結(jié)構(gòu)化數(shù)組的字段
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末哀澈,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子度气,更是在濱河造成了極大的恐慌割按,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件磷籍,死亡現(xiàn)場離奇詭異适荣,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)院领,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進(jìn)店門弛矛,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人比然,你說我怎么就攤上這事丈氓。” “怎么了?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵万俗,是天一觀的道長湾笛。 經(jīng)常有香客問我,道長闰歪,這世上最難降的妖魔是什么嚎研? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮库倘,結(jié)果婚禮上临扮,老公的妹妹穿的比我還像新娘。我一直安慰自己教翩,他們只是感情好杆勇,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著迂曲,像睡著了一般。 火紅的嫁衣襯著肌膚如雪寥袭。 梳的紋絲不亂的頭發(fā)上路捧,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天,我揣著相機(jī)與錄音传黄,去河邊找鬼扶踊。 笑死蝉稳,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播灼狰,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼咪笑!你這毒婦竟也來了唧席?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤窒舟,失蹤者是張志新(化名)和其女友劉穎系忙,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體惠豺,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡银还,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了洁墙。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蛹疯。...
    茶點(diǎn)故事閱讀 39,690評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖热监,靈堂內(nèi)的尸體忽然破棺而出捺弦,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布羹呵,位于F島的核電站骂际,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏冈欢。R本人自食惡果不足惜歉铝,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望凑耻。 院中可真熱鬧太示,春花似錦、人聲如沸香浩。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽邻吭。三九已至餐弱,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間囱晴,已是汗流浹背膏蚓。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留畸写,地道東北人驮瞧。 一個(gè)月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像枯芬,于是被迫代替她去往敵國和親论笔。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評論 2 353

推薦閱讀更多精彩內(nèi)容