NumPy快速入門手冊

??NumPy(Numerical Python)是Python語言的一個擴(kuò)充程序庫凰萨。支持高級大量的維度數(shù)組與矩陣運算,此外也針對數(shù)組運算提供大量的數(shù)學(xué)函數(shù)庫娩井。

ndarray類

??NumPy中的數(shù)組類被稱為ndarray逗嫡,要注意的是numpy.array與Python標(biāo)準(zhǔn)庫中的array.array是不同的。ndarray具有如下比較重要的屬性:

ndarray.ndim

??ndarray.ndim表示數(shù)組的維度崖瞭。

ndarray.shape

??ndarray.shape是一個整型tuple,用來表示數(shù)組中的每個維度的大小撑毛。例如书聚,對于一個n行和m列的矩陣唧领,其shape為(n,m)。

ndarray.size

??ndarray.size表示數(shù)組中元素的個數(shù)雌续,其值等于shape中所有整數(shù)的乘積斩个。

ndarray.dtype

??ndarray.dtype用來描述數(shù)組中元素的類型,ndarray中的所有元素都必須是同一種類型驯杜,如果在構(gòu)造數(shù)組時受啥,傳入的參數(shù)不是同一類型的,不同的類型將進(jìn)行統(tǒng)一轉(zhuǎn)化鸽心。除了標(biāo)準(zhǔn)的Python類型外滚局,NumPy額外提供了一些自有的類型,如numpy.int32顽频、numpy.int16以及numpy.float64等藤肢。

ndarray.itemsize

??ndarray.itemsize用于表示數(shù)組中每個元素的字節(jié)大小。

代碼示例:
>>> import numpy as np
>>> a = np.arange(15).reshape(3,5)
>>> a
array([[ 0,  1,  2,  3,  4],
       [ 5,  6,  7,  8,  9],
       [10, 11, 12, 13, 14]])
>>> a.shape
(3, 5)
>>> a.ndim
2
>>> a.dtype.name
'int64'
>>> a.dtype
dtype('int64')
>>> a.size
15
>>> a.itemsize
8
>>> type(a)
<class 'numpy.ndarray'>
>>> 
>>> b = np.array([1,2,3,4,5,6,7,8,9])
>>> b
array([1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> c = np.array([1,2,3,4,5,6,'7','a','b'])
>>> c
array(['1', '2', '3', '4', '5', '6', '7', 'a', 'b'], dtype='<U21')
>>> type(b)
<class 'numpy.ndarray'>
>>> type(c)
<class 'numpy.ndarray'>
>>> c.dtype
dtype('<U21')
>>> b.dtype
dtype('int64')
>>> c.itemsize
84
>>> b.itemsize
8

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

??NumPy中創(chuàng)建數(shù)組的方式有若干種糯景。最簡單的嘁圈,可以直接利用Python中常規(guī)的listtuple進(jìn)行創(chuàng)建。

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

??這里需要注意傳入的參數(shù)蟀淮,下面的第一種方式是錯誤的:

>>> a = np.array(1,2,3,4)    # WRONG
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: only 2 non-keyword arguments accepted
>>> a = np.array([1,2,3,4])  # RIGHT

??另外最住,傳入的參數(shù)必須是同一結(jié)構(gòu),不是同一結(jié)構(gòu)將發(fā)生轉(zhuǎn)換。

>>> import numpy as np
>>> a = np.array([1,2,3.5])
>>> a
array([1. , 2. , 3.5])
>>> b = np.array([1,2,3])
>>> b
array([1, 2, 3])
>>> c = np.array(['1',2,3])
>>> c
array(['1', '2', '3'], dtype='<U1')
>>> 

??另外灭贷,array還可以將序列的序列轉(zhuǎn)換成二位數(shù)組温学,可以將序列的序列的序列轉(zhuǎn)換成三維數(shù)組略贮,以此類推甚疟。

>>> import numpy as np
>>> a = np.array([[1,2,3],[2,3,4]])
>>> a
array([[1, 2, 3],
       [2, 3, 4]])
>>> b = np.array([[1,2,3],[2,3,4],[3,4,5]])
>>> b
array([[1, 2, 3],
       [2, 3, 4],
       [3, 4, 5]])
>>> 

??另外,創(chuàng)建數(shù)組的時候逃延,可以明確的規(guī)定數(shù)組的類型览妖。

>>> c = np.array([1,2,3], dtype = complex)
>>> c
array([1.+0.j, 2.+0.j, 3.+0.j])
>>> d = np.array([[1,2,3],[4,5,6]], dtype = '<U1')
>>> d
array([['1', '2', '3'],
       ['4', '5', '6']], dtype='<U1')
>>> 

??另外,NumPy還提供了便捷地創(chuàng)建特定數(shù)組的方式揽祥。

>>> import numpy as np
>>> a = np.zeros((3,4))
>>> a
array([[0., 0., 0., 0.],
       [0., 0., 0., 0.],
       [0., 0., 0., 0.]])
>>> b = np.zeros((2,2,2))
>>> b
array([[[0., 0.],
        [0., 0.]],

       [[0., 0.],
        [0., 0.]]])
>>> c = np.ones((3,3))
>>> c
array([[1., 1., 1.],
       [1., 1., 1.],
       [1., 1., 1.]])
>>> d = np.ones((3,3), dtype = np.int16)
>>> d
array([[1, 1, 1],
       [1, 1, 1],
       [1, 1, 1]], dtype=int16)
>>> e = np.arange(15)
>>> e
array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14])
>>> f = np.arange(15).reshape(3,5)
>>> f
array([[ 0,  1,  2,  3,  4],
       [ 5,  6,  7,  8,  9],
       [10, 11, 12, 13, 14]])
>>> g = np.arange(0,15,3)
>>> g
array([ 0,  3,  6,  9, 12])
>>> h = np.arange(0,3,0.3)
>>> h
array([0. , 0.3, 0.6, 0.9, 1.2, 1.5, 1.8, 2.1, 2.4, 2.7])

>>> from numpy import pi
>>> np.linspace( 0, 2, 9 )                 # 9 numbers from 0 to 2
array([ 0.  ,  0.25,  0.5 ,  0.75,  1.  ,  1.25,  1.5 ,  1.75,  2.  ])
>>> x = np.linspace( 0, 2*pi, 100 )        # useful to evaluate function at lots of points
>>> f = np.sin(x)

基本操作

??對數(shù)組中的算術(shù)操作是元素對應(yīng)(elementwise)的讽膏,例如,對兩個數(shù)組進(jìn)行加減乘除拄丰,其結(jié)果是對兩個數(shù)組對一個位置上的數(shù)進(jìn)行加減乘除府树,數(shù)組算術(shù)操作的結(jié)果會存放在一個新建的數(shù)組中。

>>> import numpy as np
>>> a = np.array([10,20,30,40])
>>> b = np.arange(4)
>>> a
array([10, 20, 30, 40])
>>> b
array([0, 1, 2, 3])
>>> c = a - b
>>> c
array([10, 19, 28, 37])
>>> a
array([10, 20, 30, 40])
>>> b
array([0, 1, 2, 3])
>>> b**2
array([0, 1, 4, 9])
>>> b
array([0, 1, 2, 3])
>>> a<35
array([ True,  True,  True, False])
>>> a
array([10, 20, 30, 40])

??在NumPy中料按,*用于數(shù)組間元素對應(yīng)的乘法奄侠,而不是矩陣乘法,矩陣乘法可以用dot()方法來實現(xiàn)载矿。

>>> A = np.array([[1,2],[3,4]])
>>> B = np.array([[0,1],[0,1]])
>>> A
array([[1, 2],
       [3, 4]])
>>> B
array([[0, 1],
       [0, 1]])
>>> A*B                    # elementwise product
array([[0, 2],
       [0, 4]])
>>> A.dot(B)               # matrix product
array([[0, 3],
       [0, 7]])
>>> np.dot(A,B)            # another matrix product
array([[0, 3],
       [0, 7]])

??有些操作垄潮,如*=+=-=弯洗,/=等操作旅急,會直接改變需要操作的數(shù)組,而不是創(chuàng)建一個新的數(shù)組牡整。

>>> a = np.ones((2,3), dtype = int)
>>> a
array([[1, 1, 1],
       [1, 1, 1]])
>>> b = np.random.random((2,3))
>>> b
array([[0.27020018, 0.16904478, 0.29618462],
       [0.45432616, 0.99311013, 0.56769309]])
>>> a *= 3
>>> a
array([[3, 3, 3],
       [3, 3, 3]])
>>> b += 3
>>> b
array([[3.27020018, 3.16904478, 3.29618462],
       [3.45432616, 3.99311013, 3.56769309]])
>>> b += a
>>> b
array([[6.27020018, 6.16904478, 6.29618462],
       [6.45432616, 6.99311013, 6.56769309]])
>>> a
array([[3, 3, 3],
       [3, 3, 3]])
>>> a += b              # b is not automatically converted to integer type
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: Cannot cast ufunc add output from dtype('float64') to dtype('int64') with casting rule 'same_kind'
>>> 

??當(dāng)操作不同類型的數(shù)組時藐吮,最終的結(jié)果數(shù)組的類型取決于精度最寬的數(shù)組的類型。(即所謂的向上造型)

>>> a = np.ones(3, dtype=np.int32)
>>> b = np.linspace(0,pi,3)
>>> b.dtype.name
'float64'
>>> c = a+b
>>> c
array([ 1.        ,  2.57079633,  4.14159265])
>>> c.dtype.name
'float64'
>>> d = np.exp(c*1j)
>>> d
array([ 0.54030231+0.84147098j, -0.84147098+0.54030231j,
       -0.54030231-0.84147098j])
>>> d.dtype.name
'complex128'

??ndarray類實現(xiàn)了許多操作數(shù)組的一元方法逃贝,如求和炎码、求最大值、求最小值等秋泳。

>>> a = np.random.random((2,3))
>>> a
array([[0.62181697, 0.26165654, 0.34994938],
       [0.95619296, 0.24614291, 0.42120462]])
>>> a.sum()
2.8569633678947346
>>> a.min()
0.24614290611891454
>>> a.max()
0.9561929625193091
>>> 

??除了上述一元方法以外潦闲,NumPy還提供了操作數(shù)組中特定行和列的一元方法,通過制定不同的axis來實現(xiàn)迫皱。

>>> b = np.arange(12).reshape(3,4)
>>> b
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11]])
>>> b.sum(axis = 0)                   # sum of each column
array([12, 15, 18, 21])
>>> b.sum(axis = 1)                   # sum of each row
array([ 6, 22, 38])
>>> b.min(axis = 0)                   # min of each column
array([0, 1, 2, 3])
>>> b.min(axis = 1)                   # min of each row
array([0, 4, 8])
>>> b.max(axis = 0)                   # max of each column
array([ 8,  9, 10, 11])
>>> b.max(axis = 1)                   # max of each row
array([ 3,  7, 11])
>>> b.cumsum(axis = 1)                # cumulative sum along each row
array([[ 0,  1,  3,  6],
       [ 4,  9, 15, 22],
       [ 8, 17, 27, 38]])
>>> b.cumsum(axis = 0)                # cumulative sum along each column
array([[ 0,  1,  2,  3],
       [ 4,  6,  8, 10],
       [12, 15, 18, 21]])
>>> 

通用方法

??NumPy提供了大量的通用數(shù)學(xué)和算術(shù)方法歉闰,比如常見的sincos卓起、具體可以參考如下:

all, any, apply_along_axis, argmax, argmin, argsort, average, bincount, ceil, clip, conj, corrcoef, cov, cross, cumprod, cumsum, diff, dot, floor, inner, inv, lexsort, max, maximum, mean, median, min, minimum, nonzero, outer, prod, re, round, sort, std, sum, trace, transpose, var, vdot, vectorize, where

>>> B = np.arange(3)
>>> B
array([0, 1, 2])
>>> np.exp(B)
array([ 1.        ,  2.71828183,  7.3890561 ])
>>> np.sqrt(B)
array([ 0.        ,  1.        ,  1.41421356])
>>> C = np.array([2., -1., 4.])
>>> np.add(B, C)
array([ 2.,  0.,  6.])

數(shù)組索引和迭代

??與Python中定義的list一樣和敬,NumPy支持一維數(shù)組的索引、切片和迭代戏阅。

>>> a = np.arange(10)**3
>>> a
array([  0,   1,   8,  27,  64, 125, 216, 343, 512, 729])
>>> a[3]
27
>>> a[2:5]
array([ 8, 27, 64])
>>> a[:6:2] = -1111
>>> a
array([-1111,     1, -1111,    27, -1111,   125,   216,   343,   512,
         729])
>>> a[::-1]
array([  729,   512,   343,   216,   125, -1111,    27, -1111,     1,
       -1111])

??多維數(shù)組與一維數(shù)組相似昼弟,其在每個軸上都有一個對應(yīng)的索引(index),這些索引是在一個逗號分隔的元組(tuple)中給出的奕筐。

>>> b = np.arange(15).reshape(3,5)
>>> b
array([[ 0,  1,  2,  3,  4],
       [ 5,  6,  7,  8,  9],
       [10, 11, 12, 13, 14]])
>>> b[2,3]
13
>>> b[3,3]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: index 3 is out of bounds for axis 0 with size 3
>>> b[0,0]
0
>>> b[0,4]
4
>>> 
>>> 
>>> b[:, 1]
array([ 1,  6, 11])
>>> b[1, :]
array([5, 6, 7, 8, 9])
>>> b[-1]
array([10, 11, 12, 13, 14])
>>> b.shape
(3, 5)

??這里需要注意的是舱痘,數(shù)組的第一個索引是從0開始的。一維數(shù)組和多維數(shù)組的迭代离赫,可以參考如下示例:

>>> for row in b:
...     print(row)
...
[0 1 2 3]
[10 11 12 13]
[20 21 22 23]
[30 31 32 33]
[40 41 42 43]

>>> for element in b.flat:
...     print(element)
...
0
1
2
3
10
11
12
13
20
21
22
23
30
31
32
33
40
41
42
43

??其中flat屬性是array中的每個元素的迭代器芭逝。

shape操作

1. 改變數(shù)組的shape

??Numpy中數(shù)組shape由每個軸上元素的個數(shù)決定的。例如:

>>> import numpy as np
>>> a = np.ones((3,4), dtype = int)
>>> a
array([[1, 1, 1, 1],
       [1, 1, 1, 1],
       [1, 1, 1, 1]])
>>> a.shape
(3, 4)

??NumPy中數(shù)組的shape是可以通過多種方式進(jìn)行改變的渊胸,下面展示三種改變數(shù)組shape而不改變當(dāng)前數(shù)組的方法旬盯,這三種方法返回一個特定shape的數(shù)組,但是并不改變原來的數(shù)組:

>>> import numpy as np
>>> a = np.ones((3,4), dtype = int)
>>> a
array([[1, 1, 1, 1],
       [1, 1, 1, 1],
       [1, 1, 1, 1]])
>>> a.ravel()
array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1])
>>> a
array([[1, 1, 1, 1],
       [1, 1, 1, 1],
       [1, 1, 1, 1]])
>>> b = a.ravel()
>>> b
array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1])
>>> a
array([[1, 1, 1, 1],
       [1, 1, 1, 1],
       [1, 1, 1, 1]])
>>> c = a.reshape(2,-1)
>>> c
array([[1, 1, 1, 1, 1, 1],
       [1, 1, 1, 1, 1, 1]])
>>> a
array([[1, 1, 1, 1],
       [1, 1, 1, 1],
       [1, 1, 1, 1]])
>>> a.T
array([[1, 1, 1],
       [1, 1, 1],
       [1, 1, 1],
       [1, 1, 1]])
>>> a
array([[1, 1, 1, 1],
       [1, 1, 1, 1],
       [1, 1, 1, 1]])
>>> d = a.T
>>> d
array([[1, 1, 1],
       [1, 1, 1],
       [1, 1, 1],
       [1, 1, 1]])
>>> a.shape
(3, 4)
>>> b.shape
(12,)
>>> c.shape
(2, 6)
>>> d.shape
(4, 3)

??除此之外翎猛,NumPy還提供了可以直接修改原始數(shù)組shape的方法——resize()胖翰。resize()方法和reshape()方法的最主要區(qū)別在于,reshape()方法返回一個特定shape的數(shù)組切厘,而resize()方法會直接更改原數(shù)組萨咳。

>>> a = np.arange(12).reshape(3,4)
>>> a
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11]])
>>> a.resize(2,6)
>>> a
array([[ 0,  1,  2,  3,  4,  5],
       [ 6,  7,  8,  9, 10, 11]])
2. 數(shù)組堆疊和切片

??NumPy支持將多個數(shù)據(jù)按照不同的軸進(jìn)行堆疊:

>>> a = np.floor(10*np.random.random((2,2)))
>>> a
array([[0., 8.],
       [4., 8.]])
>>> b = np.floor(10*np.random.random((2,2)))
>>> b
array([[1., 4.],
       [4., 1.]])
>>> np.vstack((a,b))
array([[0., 8.],
       [4., 8.],
       [1., 4.],
       [4., 1.]])
>>> np.hstack((a,b))
array([[0., 8., 1., 4.],
       [4., 8., 4., 1.]])

??hstack()實現(xiàn)數(shù)組橫向堆疊,vstack()實現(xiàn)數(shù)組縱向堆疊迂卢。

>>> from numpy import newaxis
>>> np.column_stack((a,b))
array([[4, 2],
       [2, 8]])
>>> a[:, newaxis]
array([[4],
       [2]])
>>> np.column_stack((a[:,newaxis],b[:,newaxis]))
array([[4, 2],
       [2, 8]])
>>> np.vstack((a[:,newaxis],b[:,newaxis]))
array([[4],
       [2],
       [2],
       [8]])

>>> np.r_[1:4,0,4]
array([1, 2, 3, 0, 4])

??除了支持?jǐn)?shù)組的橫向和縱向堆疊之外某弦,NumPy還支持?jǐn)?shù)組的橫向和縱向分割桐汤,示例如下:

>>> a = np.arange(12).reshape(3,4)
>>> a
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11]])
>>> np.split(a,3)
[array([[0, 1, 2, 3]]), array([[4, 5, 6, 7]]), array([[ 8,  9, 10, 11]])]
>>> np.h
np.half(         np.hanning(      np.histogram(    np.histogramdd(  np.hstack(       
np.hamming(      np.heaviside(    np.histogram2d(  np.hsplit(       np.hypot(        
>>> np.hsplit(a,4)
[array([[0],
       [4],
       [8]]), array([[1],
       [5],
       [9]]), array([[ 2],
       [ 6],
       [10]]), array([[ 3],
       [ 7],
       [11]])]
>>> np.vsplit(a,3)
[array([[0, 1, 2, 3]]), array([[4, 5, 6, 7]]), array([[ 8,  9, 10, 11]])]
>>> 

??其中,split()方法默認(rèn)為橫線分割靶壮。

復(fù)制和視圖

??NumPy中怔毛,數(shù)組的復(fù)制有三種方式:

  1. Python通用的地址復(fù)制:通過 b = a 復(fù)制 a 的值,b 與 a 指向同一地址腾降,改變 b 同時也改變 a拣度。
  2. 通過視圖ndarray.view()僅復(fù)制值,當(dāng)對 c 值進(jìn)行改變會改變 a 的對應(yīng)的值螃壤,而改變 c 的 shape 不改變 a 的 shape抗果。
  3. ndarray.copy() 進(jìn)行的完整的拷貝,產(chǎn)生一份完全相同的獨立的復(fù)制奸晴。
>>> a = np.arange(12)
>>> a
array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11])
>>> b = a
>>> print(a is b)
True
>>> 
>>> 
>>> c = a.view()
>>> c
array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11])
>>> print(a is c)
False
>>> c.shape = 2,6
>>> c
array([[ 0,  1,  2,  3,  4,  5],
       [ 6,  7,  8,  9, 10, 11]])
>>> c[0,0] = 111
>>> c
array([[111,   1,   2,   3,   4,   5],
       [  6,   7,   8,   9,  10,  11]])
>>> a
array([111,   1,   2,   3,   4,   5,   6,   7,   8,   9,  10,  11])
>>> 
>>> 
>>> d = a.copy()
>>> print(a is d)
False
>>> d.shape = 2,6
>>> d
array([[111,   1,   2,   3,   4,   5],
       [  6,   7,   8,   9,  10,  11]])
>>> a
array([111,   1,   2,   3,   4,   5,   6,   7,   8,   9,  10,  11])
>>> d[0,0] = 999
>>> d
array([[ 999,  1,  2,  3,  4,  5],
       [ 6,  7,  8,  9, 10, 11]])
>>> a
array([111,   1,   2,   3,   4,   5,   6,   7,   8,   9,  10,  11])
>>> 

NumPy功能和方法預(yù)覽

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

arange, array, copy, empty, empty_like, eye, fromfile, fromfunction, identity, linspace, logspace, mgrid, ogrid, ones, ones_like, r, zeros, zeros_like

數(shù)組轉(zhuǎn)換

ndarray.astype, atleast_1d, atleast_2d, atleast_3d, mat

操作

array_split, column_stack, concatenate, diagonal, dsplit, dstack, hsplit, hstack, ndarray.item, newaxis, ravel, repeat, reshape, resize, squeeze, swapaxes, take, transpose, vsplit, vstack

問題

all, any, nonzero, where

排列

argmax, argmin, argsort, max, min, ptp, searchsorted, sort

運算

choose, compress, cumprod, cumsum, inner, ndarray.fill, imag, prod, put, putmask, real, sum

基礎(chǔ)統(tǒng)計

cov, mean, std, var

基本線性代數(shù)

cross, dot, outer, linalg.svd, vdot

參考:

https://segmentfault.com/a/1190000011836017
https://docs.scipy.org/doc/numpy-dev/user/quickstart.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末冤馏,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子寄啼,更是在濱河造成了極大的恐慌逮光,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,000評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件墩划,死亡現(xiàn)場離奇詭異涕刚,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)乙帮,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,745評論 3 399
  • 文/潘曉璐 我一進(jìn)店門杜漠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人察净,你說我怎么就攤上這事驾茴。” “怎么了塞绿?”我有些...
    開封第一講書人閱讀 168,561評論 0 360
  • 文/不壞的土叔 我叫張陵沟涨,是天一觀的道長。 經(jīng)常有香客問我异吻,道長,這世上最難降的妖魔是什么喜庞? 我笑而不...
    開封第一講書人閱讀 59,782評論 1 298
  • 正文 為了忘掉前任诀浪,我火速辦了婚禮,結(jié)果婚禮上延都,老公的妹妹穿的比我還像新娘雷猪。我一直安慰自己,他們只是感情好晰房,可當(dāng)我...
    茶點故事閱讀 68,798評論 6 397
  • 文/花漫 我一把揭開白布求摇。 她就那樣靜靜地躺著射沟,像睡著了一般。 火紅的嫁衣襯著肌膚如雪与境。 梳的紋絲不亂的頭發(fā)上验夯,一...
    開封第一講書人閱讀 52,394評論 1 310
  • 那天,我揣著相機(jī)與錄音摔刁,去河邊找鬼挥转。 笑死,一個胖子當(dāng)著我的面吹牛共屈,可吹牛的內(nèi)容都是我干的绑谣。 我是一名探鬼主播,決...
    沈念sama閱讀 40,952評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼拗引,長吁一口氣:“原來是場噩夢啊……” “哼借宵!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起矾削,我...
    開封第一講書人閱讀 39,852評論 0 276
  • 序言:老撾萬榮一對情侶失蹤暇务,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后怔软,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體垦细,經(jīng)...
    沈念sama閱讀 46,409評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,483評論 3 341
  • 正文 我和宋清朗相戀三年挡逼,在試婚紗的時候發(fā)現(xiàn)自己被綠了括改。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,615評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡家坎,死狀恐怖嘱能,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情虱疏,我是刑警寧澤惹骂,帶...
    沈念sama閱讀 36,303評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站做瞪,受9級特大地震影響对粪,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜装蓬,卻給世界環(huán)境...
    茶點故事閱讀 41,979評論 3 334
  • 文/蒙蒙 一著拭、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧牍帚,春花似錦儡遮、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,470評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽肃叶。三九已至,卻和暖如春十嘿,著一層夾襖步出監(jiān)牢的瞬間因惭,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,571評論 1 272
  • 我被黑心中介騙來泰國打工详幽, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留筛欢,地道東北人。 一個月前我還...
    沈念sama閱讀 49,041評論 3 377
  • 正文 我出身青樓唇聘,卻偏偏與公主長得像版姑,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子迟郎,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,630評論 2 359