numpy基礎(chǔ)——ndarray對(duì)象

numpy 是使用python進(jìn)行數(shù)據(jù)分析不可或缺的第三方庫(kù),非常多的科學(xué)計(jì)算工具都是基于 numpy 進(jìn)行開(kāi)發(fā)的。

ndarray對(duì)象是用于存放同類型元素的多維數(shù)組,是numpy中的基本對(duì)象之一,另一個(gè)是func對(duì)象。本文主要內(nèi)容是:1 、簡(jiǎn)單介紹ndarray對(duì)象;2、ndarray對(duì)象的常用屬性;3、如何創(chuàng)建ndarray對(duì)象4、ndarray元素訪問(wèn)。
它的維度以及個(gè)維度上的元素個(gè)數(shù)由shape決定。

1 numpy.ndarray()

標(biāo)題中的函數(shù)就是numpy的構(gòu)造函數(shù),我們可以使用這個(gè)函數(shù)創(chuàng)建一個(gè)ndarray對(duì)象。構(gòu)造函數(shù)有如下幾個(gè)可選參數(shù):

參數(shù) 類型 作用
shape int型tuple 多維數(shù)組的形狀
dtype data-type 數(shù)組中元素的類型
buffer 用于初始化數(shù)組的buffer
offset int buffer中用于初始化數(shù)組的首個(gè)數(shù)據(jù)的偏移
strides int型tuple 每個(gè)軸的下標(biāo)增加1時(shí),數(shù)據(jù)指針在內(nèi)存中增加的字節(jié)數(shù)
order 'C' 或者 'F' 'C':行優(yōu)先;'F':列優(yōu)先

實(shí)例:

>>> np.ndarray(shape=(2,3), dtype=int, buffer=np.array([1,2,3,4,5,6,7]), offset=0, order="C") 
array([[1, 2, 3],
       [4, 5, 6]])
>>> np.ndarray(shape=(2,3), dtype=int, buffer=np.array([1,2,3,4,5,6,7]), offset=0, order="F")
array([[1, 3, 5],
       [2, 4, 6]])
>>> np.ndarray(shape=(2,3), dtype=int, buffer=np.array([1,2,3,4,5,6,7]), offset=8, order="C") 
array([[2, 3, 4],
       [5, 6, 7]])

2 ndarray對(duì)象的常用屬性

接下來(lái)介紹ndarray對(duì)象最常用的屬性

屬性 含義
T 轉(zhuǎn)置,與self.transpose( )相同,如果維度小于2返回self
size 數(shù)組中元素個(gè)數(shù)
itemsize 數(shù)組中單個(gè)元素的字節(jié)長(zhǎng)度
dtype 數(shù)組元素的數(shù)據(jù)類型對(duì)象
ndim 數(shù)組的維度
shape 數(shù)組的形狀
data 指向存放數(shù)組數(shù)據(jù)的python buffer對(duì)象
flat 返回?cái)?shù)組的一維迭代器
imag 返回?cái)?shù)組的虛部
real 返回?cái)?shù)組的實(shí)部
nbytes 數(shù)組中所有元素的字節(jié)長(zhǎng)度

實(shí)例:

>>> a = np.array(range(15)).reshape(3,5)
>>> a
array([[ 0,  1,  2,  3,  4],
       [ 5,  6,  7,  8,  9],
       [10, 11, 12, 13, 14]])
>>> a.T
array([[ 0,  5, 10],
       [ 1,  6, 11],
       [ 2,  7, 12],
       [ 3,  8, 13],
       [ 4,  9, 14]])
>>> a.size
15
>>> a.itemsize
8
>>> a.ndim
2
>>> a.shape
(3, 5)
>>> a.dtype
dtype('int64')

3 創(chuàng)建ndarray

3.1 array

使用array函數(shù),從常規(guī)的python列表或者元組中創(chuàng)建數(shù)組,元素的類型由原序列中的元素類型確定。

numpy.array(object, dtype=None, copy=True, order=None, subok=False, ndmin=0)

實(shí)例:

>>> np.array([1, 2, 3])
array([1, 2, 3])
>>> np.array([[1, 2],[3, 4]])
array([[1, 2],
       [3, 4]])
>>> c = array( [ [1,2], [3,4] ], dtype=complex )
>>> c
array([[1.+0.j, 2.+0.j], 
       [3.+0.j, 4.+0.j]])
>>> a = np.array([1, 2, 3], ndmin=2)
>>> a
array([[1, 2, 3]])
>>> a.shape
(1, 3)
>>> np.array(np.mat('1 2; 3 4'))
array([[1, 2],
       [3, 4]])
>>> np.array(np.mat('1 2; 3 4'), subok=True)
matrix([[1, 2],
        [3, 4]])

subokTrue,并且object是ndarray子類時(shí)(比如矩陣類型),返回的數(shù)組保留子類類型

3.2 ones與zeros系列函數(shù)

某些時(shí)候,我們?cè)趧?chuàng)建數(shù)組之前已經(jīng)確定了數(shù)組的維度以及各維度的長(zhǎng)度。這時(shí)我們就可以使用numpy內(nèi)建的一些函數(shù)來(lái)創(chuàng)建ndarray。
例如:函數(shù)ones創(chuàng)建一個(gè)全1的數(shù)組、函數(shù)zeros創(chuàng)建一個(gè)全0的數(shù)組、函數(shù)empty創(chuàng)建一個(gè)內(nèi)容隨機(jī)的數(shù)組,在默認(rèn)情況下,用這些函數(shù)創(chuàng)建的數(shù)組的類型都是float64,若需要指定數(shù)據(jù)類型,只需要閑置dtype參數(shù)即可:

>>> a = np.ones(shape = (2, 3))    #可以通過(guò)元組指定數(shù)組形狀
>>> a
array([[ 1.,  1.,  1.],
       [ 1.,  1.,  1.]])
>>> a.dtype
dtype('float64')
>>> b = np.zeros(shape = [3, 2], dtype=np.int64)    #也可以通過(guò)列表來(lái)指定數(shù)組形狀,同時(shí)這里指定了數(shù)組類型
>>> b
array([[0, 0],
       [0, 0],
       [0, 0]])
>>> b.dtype
dtype('int64')
>>> c = np.empty((4,2))
>>> c
array([[  0.00000000e+000,   0.00000000e+000],
       [  6.92806325e-310,   6.92806326e-310],
       [  6.92806326e-310,   6.92806326e-310],
       [  0.00000000e+000,   0.00000000e+000]])

上述三個(gè)函數(shù)還有三個(gè)從已知的數(shù)組中,創(chuàng)建shape相同的多維數(shù)組:ones_like、zeros_like、empty_like,用法如下:

>>> a = [[1,2,3], [3,4,5]]
>>> b = np.zeros_like(a)
>>> b
array([[0, 0, 0],
       [0, 0, 0]])
#其他兩個(gè)函數(shù)用法類似

除了上述幾個(gè)用于創(chuàng)建數(shù)組的函數(shù),還有如下幾個(gè)特殊的函數(shù):

函數(shù)名 用途
eye 生成對(duì)角線全1,其余位置全是0的二維數(shù)組
identity 生成單位矩陣
full 生成由固定值填充的數(shù)組
full_like 生成由固定值填充的、形狀與給定數(shù)組相同的數(shù)組

特別地,eye函數(shù)的全1的對(duì)角線位置有參數(shù)k確定
用法如下:

>>> np.eye(3, k = 0)    #k=0時(shí),全1對(duì)角線為主對(duì)角線
array([[ 1.,  0.,  0.],
       [ 0.,  1.,  0.],
       [ 0.,  0.,  1.]])
>>> np.eye(3, k = 1)  #k>0時(shí),全1對(duì)角線向上移動(dòng)相應(yīng)的位置
array([[ 0.,  1.,  0.],
       [ 0.,  0.,  1.],
       [ 0.,  0.,  0.]])
>>> np.eye(3, k = -1)  #k<0時(shí),全1對(duì)角線向下移動(dòng)相應(yīng)的位置
array([[ 0.,  0.,  0.],
       [ 1.,  0.,  0.],
       [ 0.,  1.,  0.]])
>>> np.identity(4)
array([[ 1.,  0.,  0.,  0.],
       [ 0.,  1.,  0.,  0.],
       [ 0.,  0.,  1.,  0.],
       [ 0.,  0.,  0.,  1.]])
>>> np.full(shape = (2,2), fill_value = 2)
array([[ 2.,  2.],
       [ 2.,  2.]])
>>> np.full_like([[1,2,3],[3,4,5]], 3)
array([[3, 3, 3],
       [3, 3, 3]])

3.3 arange、linspace與logspace

  1. arange函數(shù)類似python中的range函數(shù),通過(guò)指定初始值、終值以及步長(zhǎng)(默認(rèn)步長(zhǎng)為1)來(lái)創(chuàng)建數(shù)組
  2. linspace函數(shù)通過(guò)指定初始值、終值以及元素個(gè)數(shù)來(lái)創(chuàng)建一維數(shù)組
  3. logspace函數(shù)與linspace類似,只不過(guò)它創(chuàng)建的是一個(gè)等比數(shù)列,同樣的也是一個(gè)一維數(shù)組
    實(shí)例:
>>> np.arange(0,10,2) 
array([0, 2, 4, 6, 8])
>>> np.arange(0,10)
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> np.linspace(0,10, 20)
array([  0.        ,   0.52631579,   1.05263158,   1.57894737,
         2.10526316,   2.63157895,   3.15789474,   3.68421053,
         4.21052632,   4.73684211,   5.26315789,   5.78947368,
         6.31578947,   6.84210526,   7.36842105,   7.89473684,
         8.42105263,   8.94736842,   9.47368421,  10.        ])
>>> np.logspace(0, 10, 10)
array([  1.00000000e+00,   1.29154967e+01,   1.66810054e+02,
         2.15443469e+03,   2.78255940e+04,   3.59381366e+05,
         4.64158883e+06,   5.99484250e+07,   7.74263683e+08,
         1.00000000e+10])

3.4 fromstring與fromfunction

  1. fromstring函數(shù)從字符串中讀取數(shù)據(jù)并創(chuàng)建數(shù)組
  2. fromfunction函數(shù)由第一個(gè)參數(shù)作為計(jì)算每個(gè)數(shù)組元素的函數(shù)(函數(shù)對(duì)象或者lambda表達(dá)式均可),第二個(gè)參數(shù)為數(shù)組的形狀
    實(shí)例:
>>> s1 = "1,2,3,4,5"
>>> np.fromstring(s1, dtype=np.int64, sep=",")
array([1, 2, 3, 4, 5])
>>> s2 = "1.01 2.23 3.53 4.76"
>>> np.fromstring(s2, dtype=np.float64, sep=" ")
array([ 1.01,  2.23,  3.53,  4.76])
>>> def func(i, j):
...     return (i+1)*(j+1)
... 
>>> np.fromfunction(func, (9,9))
array([[  1.,   2.,   3.,   4.,   5.,   6.,   7.,   8.,   9.],
       [  2.,   4.,   6.,   8.,  10.,  12.,  14.,  16.,  18.],
       [  3.,   6.,   9.,  12.,  15.,  18.,  21.,  24.,  27.],
       [  4.,   8.,  12.,  16.,  20.,  24.,  28.,  32.,  36.],
       [  5.,  10.,  15.,  20.,  25.,  30.,  35.,  40.,  45.],
       [  6.,  12.,  18.,  24.,  30.,  36.,  42.,  48.,  54.],
       [  7.,  14.,  21.,  28.,  35.,  42.,  49.,  56.,  63.],
       [  8.,  16.,  24.,  32.,  40.,  48.,  56.,  64.,  72.],
       [  9.,  18.,  27.,  36.,  45.,  54.,  63.,  72.,  81.]])
>>> np.fromfunction(lambda i,j: i+j, (3,3), dtype = int)
array([[0, 1, 2],
       [1, 2, 3],
       [2, 3, 4]])

除了上面兩個(gè)函數(shù)還有其他幾個(gè)類似的從外部獲取數(shù)據(jù)并創(chuàng)建ndarray,比如:frombuffer、fromfile、fromiter,還沒(méi)用過(guò),等用到了在詳細(xì)記錄

4 ndarray創(chuàng)建特殊的二維數(shù)組

ndarray提供了一些創(chuàng)建二維數(shù)組的特殊函數(shù)。numpy中matrix是對(duì)二維數(shù)組ndarray進(jìn)行了封裝之后的子類。這里介紹的關(guān)于二維數(shù)組的創(chuàng)建,返回的依舊是一個(gè)ndarray對(duì)象,而不是matrix子類。關(guān)于matrix的創(chuàng)建和操作,待后續(xù)筆記詳細(xì)描述。為了表述方便,下面依舊使用矩陣這一次來(lái)表示創(chuàng)建的二維數(shù)組。

  1. diag函數(shù)返回一個(gè)矩陣的對(duì)角線元素、或者創(chuàng)建一個(gè)對(duì)角陣,對(duì)角線由參數(shù)k控制
  2. diagflat函數(shù)以輸入作為對(duì)角線元素,創(chuàng)建一個(gè)矩陣,對(duì)角線由參數(shù)k控制
  3. tri函數(shù)生成一個(gè)矩陣,在某對(duì)角線以下元素全為1,其余全為0,對(duì)角線由參數(shù)k控制
  4. tril函數(shù)輸入一個(gè)矩陣,返回該矩陣的下三角矩陣,下三角的邊界對(duì)角線由參數(shù)k控制
  5. triu函數(shù)與tril類似,返回的是矩陣的上三角矩陣
  6. vander函數(shù)輸入一個(gè)一維數(shù)組,返回一個(gè)范德蒙德矩陣
#diag用法
>>> x = np.arange(9).reshape((3,3))
>>> x
array([[0, 1, 2],
       [3, 4, 5],
       [6, 7, 8]])
>>> np.diag(x)
array([0, 4, 8])
>>> np.diag(x, k=1)
array([1, 5])
>>> np.diag(x, k=-1)
array([3, 7])
>>> np.diag(np.diag(x))
array([[0, 0, 0],
       [0, 4, 0],
       [0, 0, 8]])
>>> np.diag(np.diag(x), k=1)
array([[0, 0, 0, 0],
       [0, 0, 4, 0],
       [0, 0, 0, 8],
       [0, 0, 0, 0]])
#diagflat用法
>>> np.diagflat([[1,2],[3,4]])
array([[1, 0, 0, 0],
       [0, 2, 0, 0],
       [0, 0, 3, 0],
       [0, 0, 0, 4]])
>>> np.diagflat([1,2,3], k=-1)
array([[0, 0, 0, 0],
       [1, 0, 0, 0],
       [0, 2, 0, 0],
       [0, 0, 3, 0]])
#tri
>>> np.tri(3,4, k=1, dtype=int)  
array([[1, 1, 0, 0],
       [1, 1, 1, 0],
       [1, 1, 1, 1]])
>>> np.tri(3,4)
array([[ 1.,  0.,  0.,  0.],
       [ 1.,  1.,  0.,  0.],
       [ 1.,  1.,  1.,  0.]])
#tril與triu
>>> x = np.arange(12).reshape((3,4))
>>> x
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11]])
>>> np.tril(x, k=1) 
array([[ 0,  1,  0,  0],
       [ 4,  5,  6,  0],
       [ 8,  9, 10, 11]])
>>> np.triu(x, k=1) 
array([[ 0,  1,  2,  3],
       [ 0,  0,  6,  7],
       [ 0,  0,  0, 11]])
#vander
>>> np.vander([2,3,4,5])
array([[  8,   4,   2,   1],
       [ 27,   9,   3,   1],
       [ 64,  16,   4,   1],
       [125,  25,   5,   1]])
>>> np.vander([2,3,4,5], N=3)
array([[ 4,  2,  1],
       [ 9,  3,  1],
       [16,  4,  1],
       [25,  5,  1]])

5 ndarray元素訪問(wèn)

5.1 一維數(shù)組

對(duì)于一維的ndarray可以使用python訪問(wèn)內(nèi)置list的方式進(jìn)行訪問(wèn):整數(shù)索引、切片、迭代等方式
關(guān)于ndarray切片
與內(nèi)置list切片類似,形式:
array[beg:end:step]
beg: 開(kāi)始索引
end: 結(jié)束索引(不包含這個(gè)元素)
step: 間隔
需要注意的是

  1. beg可以為空,表示從索引0開(kāi)始;
  2. end也可以為空,表示達(dá)到索引結(jié)束(包含最后一個(gè)元素);
  3. step為空,表示間隔為1;
  4. 負(fù)值索引:倒數(shù)第一個(gè)元素的索引為-1,向前以此減1
  5. 負(fù)值step:從后往前獲取元素
>>> x = np.arange(16)*4
>>> x
array([ 0,  4,  8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 60])
>>> x[11]
44
>>> x[4:9]
array([16, 20, 24, 28, 32])
>>> x[:10:3]
array([ 0, 12, 24, 36])
>>> x[0:13:2]
array([ 0,  8, 16, 24, 32, 40, 48])
>>> x[::-1]    #逆置數(shù)組
array([60, 56, 52, 48, 44, 40, 36, 32, 28, 24, 20, 16, 12,  8,  4,  0])
>>> print [val for val in x]    #迭代元素
[0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 56, 60]

特別注意的是,ndarray中的切片返回的數(shù)組中的元素是原數(shù)組元素的索引,對(duì)返回?cái)?shù)組元素進(jìn)行修改會(huì)影響原數(shù)組的值

>>> x[:-1]
array([ 0,  5, 10, 15, 20, 25, 30, 35, 40])
>>> y = x[::-1]
>>> y
array([45, 40, 35, 30, 25, 20, 15, 10,  5,  0])
>>> y[0] = 100    #修改y的首個(gè)元素的值
>>> y
array([100,  40,  35,  30,  25,  20,  15,  10,   5,   0])
>>> x      #x[-1]也被修改(本質(zhì)上是一個(gè)元素)
array([  0,   5,  10,  15,  20,  25,  30,  35,  40, 100])

除了上述與list相似的訪問(wèn)元素的方式,ndarray有一種通過(guò)列表來(lái)指定要從ndarray中獲取元素的索引,例如:

>>> x = np.arange(10)*5
>>> x
array([ 0,  5, 10, 15, 20, 25, 30, 35, 40, 45])
>>> x[[0, 2, 4, 5, 9]]    #指定獲取索引為0、2、4、5、9的元素
array([ 0, 10, 20, 25, 45])

5.2 多維數(shù)組

多維ndarray中,每一維都叫一個(gè)軸axis。在ndarray中軸axis是非常重要的,有很多對(duì)于ndarray對(duì)象的運(yùn)算都是基于axis進(jìn)行,比如sum、mean等都會(huì)有一個(gè)axis參數(shù)(針對(duì)對(duì)這個(gè)軸axis進(jìn)行某些運(yùn)算操作),后續(xù)將會(huì)詳細(xì)介紹。
對(duì)于多維數(shù)組,因?yàn)槊恳粋€(gè)軸都有一個(gè)索引,所以這些索引由逗號(hào)進(jìn)行分割,例如:

>>> x = np.arange(0, 100, 5).reshape(4, 5)
>>> x
array([[ 0,  5, 10, 15, 20],
       [25, 30, 35, 40, 45],
       [50, 55, 60, 65, 70],
       [75, 80, 85, 90, 95]])
>>> x[1,2]      #第1行,第2列
35
>>> x[1:4, 3]    #第1行到第3行中所有第3列的元素
array([40, 65, 90])
>>> x[:, 4]      #所有行中的所有第4列的元素
array([20, 45, 70, 95])
>>> x[0:3, :]    #第0行到第三行中所有列的元素
array([[ 0,  5, 10, 15, 20],
       [25, 30, 35, 40, 45],
       [50, 55, 60, 65, 70]])

需要注意的是

  1. 當(dāng)提供的索引比軸數(shù)少時(shí),缺失的索引表示整個(gè)切片(只能缺失后邊的軸)
  2. 當(dāng)提供的索引為:時(shí),也表示整個(gè)切片
  3. 可以使用...代替幾個(gè)連續(xù)的:索引
>>> x[1:3]    #缺失第二個(gè)軸
array([[25, 30, 35, 40, 45],
       [50, 55, 60, 65, 70]])
>>> x[:, 0:4]      #第一個(gè)軸是 :
array([[ 0,  5, 10, 15],
       [25, 30, 35, 40],
       [50, 55, 60, 65],
       [75, 80, 85, 90]])
>>> x[..., 0:4]    #...代表了第一個(gè)軸的 : 索引
array([[ 0,  5, 10, 15],
       [25, 30, 35, 40],
       [50, 55, 60, 65],
       [75, 80, 85, 90]])

多維數(shù)組的迭代
可以使用ndarray的flat屬性迭代數(shù)組中每一個(gè)元素

>>> for item in x.flat:
...     print item,
...
0 5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,698評(píng)論 6 539
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,202評(píng)論 3 426
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事?!?“怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 177,742評(píng)論 0 382
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 63,580評(píng)論 1 316
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 72,297評(píng)論 6 410
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 55,688評(píng)論 1 327
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,693評(píng)論 3 444
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 42,875評(píng)論 0 289
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,438評(píng)論 1 335
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 41,183評(píng)論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 43,384評(píng)論 1 372
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,931評(píng)論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,612評(píng)論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 35,022評(píng)論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 36,297評(píng)論 1 292
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 52,093評(píng)論 3 397
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 48,330評(píng)論 2 377

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