欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品

主頁 > 知識庫 > 如何在向量化NumPy數(shù)組上進行移動窗口

如何在向量化NumPy數(shù)組上進行移動窗口

熱門標簽:江西省地圖標注 外呼系統(tǒng)哪些好辦 武漢外呼系統(tǒng)平臺 如何申請400電話費用 沈陽防封電銷卡品牌 富錦商家地圖標注 沈陽人工外呼系統(tǒng)價格 池州外呼調(diào)研線路 沈陽外呼系統(tǒng)呼叫系統(tǒng)

今天很有可能你已經(jīng)做了一些使用滑動窗口(也稱為移動窗口)的事情,而你甚至不知道它。例如:許多編輯算法都是基于移動窗口的。

在GIS中做地形分析的大多數(shù)地形柵格度量(坡度、坡向、山坡陰影等)都基于滑動窗口。很多情況下,對格式化為二維數(shù)組的數(shù)據(jù)進行分析時,都很有可能涉及到滑動窗口。

滑動窗口操作非常普遍,非常有用。它們也很容易在Python中實現(xiàn)。學習如何實現(xiàn)移動窗口將把你的數(shù)據(jù)分析和爭論技能提升到一個新的水平。

什么是滑動窗?

下面的例子顯示了一個3×3(3×3)滑動窗口。用紅色標注的數(shù)組元素是目標元素。這是滑動窗口將計算的新度量的數(shù)組位置。例如,在下面的圖像中,我們可以計算灰色窗口中9個元素的平均值(平均值也是8),并將其分配給目標元素,用紅色標出。你可以計算最小值(0)、最大值(16)或其他一些指標,而不是平均值。對數(shù)組中的每個元素都這樣做。

就是這樣。這就是滑動窗口的基本原理。當然,事情可能變得更加復(fù)雜。有限差分方法可以用于時間和空間數(shù)據(jù)。邏輯可以實現(xiàn)。可以使用更大的窗口大小或非正方形窗口。你懂的。但在其核心,移動窗口分析可以簡單地總結(jié)為鄰居元素的平均值。

需要注意的是,必須為邊緣元素設(shè)置特殊的調(diào)整,因為它們沒有9個相鄰元素。因此,許多分析都排除了邊緣元素。為簡單起見,我們將在本文中排除邊緣元素。

樣例數(shù)組

3x3的滑動窗口

創(chuàng)建一個NumPy數(shù)組

為了實現(xiàn)一些簡單的示例,讓我們創(chuàng)建上面所示的數(shù)組。首先,導(dǎo)入numpy。

import numpy as np

然后使用arange創(chuàng)建一個7×7的數(shù)組,值范圍從1到48。另外,創(chuàng)建另一個包含無數(shù)據(jù)值的數(shù)組,該數(shù)組的形狀和數(shù)據(jù)類型與初始數(shù)組相同。在本例中,我使用-1作為無數(shù)據(jù)值。

a = np.arange(49).reshape((7, 7)) 
b = np.full(a.shape, -1.0)

我們將使用這些數(shù)組來開發(fā)下面的滑動窗口示例。

通過循環(huán)實現(xiàn)滑動窗口

毫無疑問,你已經(jīng)聽說過Python中的循環(huán)很慢,應(yīng)該盡可能避免。特別是在使用大型NumPy數(shù)組時。這是完全正確。盡管如此,我們將首先看一個使用循環(huán)的示例,因為這是一種簡單的方法來概念化在移動窗口操作中發(fā)生的事情。在你通過循環(huán)示例掌握了概念之后,我們將繼續(xù)使用更有效的向量化方法。

要實現(xiàn)移動窗口,只需循環(huán)遍歷所有內(nèi)部數(shù)組元素,識別所有相鄰元素的值,并在特定的計算中使用這些值。

通過行和列偏移量可以很容易地識別相鄰值。3×3窗口的偏移量如下所示。

行偏移

列偏移

循環(huán)中NumPy移動窗口的Python代碼

我們可以用三行代碼實現(xiàn)一個移動窗口。這個例子在滑動窗口內(nèi)計算平均值。首先,循環(huán)遍歷數(shù)組的內(nèi)部行。其次,循環(huán)遍歷數(shù)組的內(nèi)部列。第三,在滑動窗口內(nèi)計算平均值,并將值賦給輸出數(shù)組中相應(yīng)的數(shù)組元素。

for i in range(1, a.shape[0]-1):
    for j in range(1, a.shape[1]-1): 
        b[i, j] = (a[i-1, j-1] + a[i-1, j] + a[i-1, j+1] + a[i, j-1] + a[i, j] + a[i, j+1] + a[i+1, j-1] + a[i+1, j] + a[i+1, j+1]) / 9.0

循環(huán)后結(jié)果

你將注意到結(jié)果與輸入數(shù)組具有相同的值,但是外部元素沒有被分配數(shù)據(jù)值,因為它們不包含9個相鄰元素。

[[-1. -1. -1. -1. -1. -1. -1.]
 [-1. 8. 9. 10. 11. 12. -1.]
 [-1. 15. 16. 17. 18. 19. -1.]
 [-1. 22. 23. 24. 25. 26. -1.]
 [-1. 29. 30. 31. 32. 33. -1.] 
 [-1. 36. 37. 38. 39. 40. -1.]
 [-1. -1. -1. -1. -1. -1. -1.]]

向量化滑動窗口

Python中的數(shù)組循環(huán)通常計算效率低下。通過對通常在循環(huán)中執(zhí)行的操作進行向量化,可以提高效率。移動窗口矢量化可以通過同時抵消數(shù)組內(nèi)部的所有元素來實現(xiàn)。

如下圖所示。每個圖像都有相應(yīng)的索引。你將注意到最后一張圖像索引了所有內(nèi)部元素,并且對應(yīng)的圖像索引了每個相鄰元素的偏移量。



從左到右的偏移索引:[1:-1,:-2],[1:-1,2:],[2 :, 2:]



從左到右的偏移索引:[2 :,:-2],[2 :, 1:-1],[:-2,1:-1]




從左到右的偏移索引:[:-2,2:],[:-2,:-2],[1:-1、1:-1]

Numpy數(shù)組上的向量化移動窗口的Python代碼

有了上述偏移量,我們現(xiàn)在可以輕松地在一行代碼中實現(xiàn)滑動窗口。 只需將輸出數(shù)組的所有內(nèi)部元素設(shè)置為根據(jù)相鄰元素計算所需輸出的函數(shù)。

b[1:-1, 1:-1] = (a[1:-1, 1:-1] + a[:-2, 1:-1] + a[2:, 1:-1] + a[1:-1, :-2] + a[1:-1, 2:] + a[2:, 2:] + a[:-2, :-2] + a[2:, :-2] + a[:-2, 2:]) / 9.0

矢量化滑動窗口結(jié)果

如你所見,這將得到與循環(huán)相同的結(jié)果。

[[-1. -1. -1. -1. -1. -1. -1.]
 [-1. 8. 9. 10. 11. 12. -1.]
 [-1. 15. 16. 17. 18. 19. -1.]
 [-1. 22. 23. 24. 25. 26. -1.]
 [-1. 29. 30. 31. 32. 33. -1.]
 [-1. 36. 37. 38. 39. 40. -1.]
 [-1. -1. -1. -1. -1. -1. -1.]]

速度比較

上述兩種方法產(chǎn)生相同的結(jié)果,但哪一種更有效?我計算了從5行到100列的數(shù)組的每種方法的速度。每種方法對每個測試100次。下面是每種方法的平均時間。

很明顯,向量化的方法更加有效。隨著數(shù)組大小的增加,循環(huán)的效率呈指數(shù)級下降。另外,需要注意的是,一個包含10,000個元素(100行和100列)的數(shù)組非常小。

總結(jié)

移動窗口計算在許多數(shù)據(jù)分析工作流程中非常常見。這些計算是非常有用的,非常容易實現(xiàn)。然而,使用循環(huán)來實現(xiàn)滑動窗口操作是非常低效的。

向量化的移動窗口實現(xiàn)不僅更高效,而且使用更少的代碼行。一旦掌握了實現(xiàn)滑動窗口的向量化方法,就可以輕松有效地提高工作流程的速度。

補充:Python學習筆記——Numpy數(shù)組的移動滑窗,使用as_strided實現(xiàn)

Numpy中移動滑窗的實現(xiàn)

為何需要移動滑窗

在量化投資分析過程中,對歷史數(shù)據(jù)進行分析是一個必不可少的步驟。滑窗在歷史數(shù)據(jù)分析中的重要性不言而喻。譬如移動平均、指數(shù)平滑移動平均、MACD、DMA等等價格指標的計算都無一例外需要用到滑窗。

作為一種非常受歡迎的數(shù)據(jù)分析工具,pandas中提供了專門的滑窗類:DataFrame.rolling()。通過這個滑窗類,可以非常容易地實現(xiàn)移動平均等等算法,但是,在某些情況下,Pandas的運行速度還是不夠,需要借助Numpy的高效率進一步提升速度,這時候就需要在Numpy中實現(xiàn)滑窗了。

Numpy中的移動滑窗

可惜Numpy并沒有提供直接簡單的滑窗方法,如果使用for-loop來實現(xiàn)滑窗,不僅效率打折扣,而且內(nèi)存占用也非常大。實際上,Numpy提供了一個非常底層的函數(shù)可以用來生成滑窗:Numpy.lib.stride_tricks.as_stried。

移動滑窗的as_strided實現(xiàn)方法

舉一個例子,首先生成一個5000行200列的二維數(shù)組,我們需要在這個二維數(shù)組上生成一個寬度為200的滑窗,也就是說,第一個窗口包含前0~199行數(shù)據(jù),第二個窗口包含1~200行,第三個窗口包含2~201行,以此類推,一共4801組:

In [106]: d = np.random.randint(100, size=(5000,200))

如果使用as_strided函數(shù)生成上述滑窗,需要用下面的代碼,它生成一個三維數(shù)組,包括4801組200X200的矩陣,每一組200X200的矩陣代表一組滑窗:

In [107]: %timeit sd = as_strided(d, (4801,200,200), (200*8, 200*8, 8))
5.97 µs ± 33.2 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)

我們再嘗試一下用for-loop的方法生成一個滑窗檢驗一下前面生成的滑窗是否正確:

In [108]: %%timeit
     ...: sd2 = np.zeros((4801,200,200))
     ...: for i in range(4801):
     ...:     sd2[i] = d[i:i+200]
     ...: 
722 ms ± 98.8 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)

In [109]: np.allclose(sd, sd2)
Out[109]: True

從上面的代碼可以看出,使用as_strided生成一組滑窗,速度竟然是for-loop的十萬倍以上!那么as_strided是如何做到的呢?

關(guān)于as_strided函數(shù)的詳細解析

as_strided是怎么回事呢?看它的函數(shù)解釋:

Signature: as_strided(x, shape=None, strides=None, subok=False, writeable=True)
Docstring:
Create a view into the array with the given shape and strides.

.. warning:: This function has to be used with extreme care, see notes.

Parameters
----------
x : ndarray
Array to create a new.
shape : sequence of int, optional
The shape of the new array. Defaults to "x.shape".
strides : sequence of int, optional
The strides of the new array. Defaults to "x.strides".
subok : bool, optional
If True, subclasses are preserved.
writeable : bool, optional
If set to False, the returned array will always be readonly. Otherwise it will be writable if the original array was. It is advisable to set this to False if possible (see Notes).

Returns
-------
view : ndarray

這個函數(shù)接受的第一個參數(shù)是一個數(shù)組,第二個參數(shù)是輸出的數(shù)據(jù)shape,第三個參數(shù)是stride。要控制數(shù)據(jù)的輸出,shape和stride都非常重要

shape的含義非常簡單,就是指輸出的數(shù)據(jù)的行、列、層數(shù),這個參數(shù)是一個元組,元組的元素數(shù)量等于數(shù)組的維度。

而stride的含義就相對復(fù)雜一些,其實它的含義是指“步幅”,意思是每一個維度的數(shù)據(jù)在內(nèi)存上平移的字節(jié)數(shù)量。

因為數(shù)組在內(nèi)存中的存放方式是一維線性方式存放的,因此要訪問數(shù)組中的某個數(shù)字就需要知道平移到哪一個內(nèi)存單元,ndarray通過stride“步幅”來指定這個平移的幅度。

在as_strided函數(shù)中,stride也是一個元組,其元素的數(shù)量必須跟shape的元素數(shù)量相同,每一個元素就代表該維度的每一個數(shù)據(jù)相對前一個數(shù)據(jù)的內(nèi)存間隔。

舉個例子:

In [188]: d = np.random.randint(10, size=(5,3))

In [189]: d
Out[189]: 
array([[4, 4, 6],
       [2, 9, 3],
       [5, 1, 1],
       [2, 0, 0],
       [9, 2, 3]])


地址0 地址1 地址2 地址3 地址4 地址5 地址6 地址7 地址8 地址9 地址A 地址B 地址C 地址D 地址E
4 4 5 2 9 3 5 1 1 2 0 0 9 2 3

我們之所以看到一個二維數(shù)組,是因為numpy數(shù)組的shape為(5, 3),stride為(24, 8),意思是說,我們看到的數(shù)據(jù)有5行3列,對應(yīng)shape的(5, 3),每一行與前一行間隔24個字節(jié)(其實就是三個數(shù)字,因為每一個int類型占據(jù)8字節(jié),而每一列數(shù)字比前一列相差8字節(jié)(1個數(shù)字)

理解上面的含義以后,也就能理解如何生成一個數(shù)據(jù)滑窗了,如果我們需要生成一個2X3的數(shù)據(jù)滑窗,在d上滑動,實際上可以生成一個4組,2行3列的數(shù)據(jù)視圖,第一組覆蓋d的第0、1兩行,第二層覆蓋d的第1、2兩行,第三層覆蓋d的第2、3兩行……這樣就形成了數(shù)據(jù)滑窗的效果,我們只要在新的數(shù)據(jù)視圖上遍歷,就能遍歷整個滑窗。這樣做的好處是,在整個遍歷的過程中完全不需要對數(shù)據(jù)進行任何移動或復(fù)制的操作,因此速度飛快。

根據(jù)上面的思路,我們需要生成一個新的數(shù)據(jù)視圖,其shape為(4, 2, 3)代表4組(從頭到尾滑動4次),2行3列(滑窗的尺寸)

接下來需要確定stride,如前所述stride同樣是一個包含三個元素的元組,第一個元素是兩層數(shù)據(jù)之間的內(nèi)存間隔,由于我們的滑窗每滑動一次下移一行,因此層stride應(yīng)該是平移三個數(shù)字,也就是24個字節(jié),行stride和列stride與原來的行列stride一致,因為我們需要原樣看到按順序的數(shù)字,因此,新的stride就是:(24, 24, 8)

我們來看看這個新的數(shù)據(jù)視圖是什么樣子:

In [190]: as_strided(d, shape=(4,2,3), strides=(24,24,8))
Out[190]: 
array([[[4, 4, 6],
        [2, 9, 3]],

       [[2, 9, 3],
        [5, 1, 1]],

       [[5, 1, 1],
        [2, 0, 0]],

       [[2, 0, 0],
        [9, 2, 3]]])

看!一個數(shù)據(jù)滑窗正確地出現(xiàn)了!

使用as_strided函數(shù)的危險之處

使用s_strided函數(shù)的最大問題是內(nèi)存讀取風險,在as_strided生成新的視圖時,由于直接操作內(nèi)存地址(這一點像極了C的指針操作),而且它并不會檢查內(nèi)存地址是否越界,因此如果稍有不慎,就會讀到別的內(nèi)存地址。關(guān)鍵是,如果不設(shè)置可讀參數(shù),還能直接對內(nèi)存中的數(shù)據(jù)進行操作,這樣就帶來了無比大的風險。了解這個風險對正確操作至關(guān)重要!

例如,使用下面的stride會直接溢出到其他的未知內(nèi)存地址上,并讀取它的值,甚至還可以直接修改它:

In [194]: as_strided(d, shape=(5,2,3), strides=(24,24,8))
Out[194]: 
array([[[               4,                4,                6],
        [               2,                9,                3]],

       [[               2,                9,                3],
        [               5,                1,                1]],

       [[               5,                1,                1],
        [               2,                0,                0]],

       [[               2,                0,                0],
        [               9,                2,                3]],

       [[               9,                2,                3],
        [2251799813685248,            18963,                0]]])

這時對象的第五組就映射到了三個未知的內(nèi)存地址上,如果不慎修改了這三個地址上的內(nèi)容,就可能造成難以預(yù)料的問題,如程序崩潰等。

所以,官方才在文檔中鄭重地警告:如果有可能,盡量避免使用as_strided函數(shù)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • numpy 聲明空數(shù)組詳解
  • Numpy將二維數(shù)組添加到空數(shù)組的實現(xiàn)
  • 在NumPy中創(chuàng)建空數(shù)組/矩陣的方法
  • NumPy實現(xiàn)ndarray多維數(shù)組操作
  • 如何將numpy二維數(shù)組中的np.nan值替換為指定的值
  • 解決numpy數(shù)組互換兩行及賦值的問題
  • python 將numpy維度不同的數(shù)組相加相乘操作
  • python numpy.power()數(shù)組元素求n次方案例
  • Python 用NumPy創(chuàng)建二維數(shù)組的案例
  • Numpy ndarray 多維數(shù)組對象的使用
  • 淺談Python numpy創(chuàng)建空數(shù)組的問題

標簽:銅川 通遼 潛江 呂梁 阿里 常德 黑龍江 株洲

巨人網(wǎng)絡(luò)通訊聲明:本文標題《如何在向量化NumPy數(shù)組上進行移動窗口》,本文關(guān)鍵詞  如,何在,向,量化,NumPy,數(shù)組,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《如何在向量化NumPy數(shù)組上進行移動窗口》相關(guān)的同類信息!
  • 本頁收集關(guān)于如何在向量化NumPy數(shù)組上進行移動窗口的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品
  • <rt id="w000q"><acronym id="w000q"></acronym></rt>
  • <abbr id="w000q"></abbr>
    <rt id="w000q"></rt>
    91精品福利在线| 国产欧美综合色| 一个色在线综合| a美女胸又www黄视频久久| 我不卡一区二区| 精品国产麻豆免费人成网站| 午夜成人免费视频| 岛国精品一区二区三区| 欧美中文字幕久久| 亚洲黄色小视频| 伦伦影院午夜理论片| 在线观看免费一区| 亚洲黄网站在线观看| 日韩高清一二三区| 欧美精品一二三区| 性感美女久久精品| 捆绑裸体绳奴bdsm亚洲| 欧美电视剧免费观看| 麻豆精品久久久| 波多野结衣a v在线| 久久毛片高清国产| 国产高清亚洲一区| 1024手机在线视频| 亚洲制服丝袜在线| 不许穿内裤随时挨c调教h苏绵| 欧美日韩精品二区第二页| 亚洲二区在线视频| 在线观看国产网站| 2020国产精品自拍| 大胆亚洲人体视频| 日本高清不卡视频| 五月天网站亚洲| 成人在线一级片| 国产精品色哟哟网站| 91丝袜美女网| 88在线观看91蜜桃国自产| 蜜桃av噜噜一区二区三区小说| 日本黄色小视频在线观看| 国产精品免费久久| 无人码人妻一区二区三区免费| 51午夜精品国产| 九色porny丨国产精品| 中文字幕在线2021| 国产.欧美.日韩| 欧美成人国产精品一区二区| 在线播放av网址| 欧美人与禽zoz0善交| 99视频只有精品| 一区二区三区四区在线| 成人小视频在线观看| 欧美亚洲动漫另类| 日本女人一区二区三区| 亚洲欧美综合7777色婷婷| 一区二区高清在线| 99久久人妻无码精品系列| 国产精品白丝在线| 久久人妻一区二区| 国产精品久久久久一区| 成年女人免费视频| 欧美国产成人在线| xxxxxx黄色| 国产精品久久久久久户外露出| 国产人妖在线观看| 国产色婷婷亚洲99精品小说| www男人天堂| 久久久蜜桃精品| 丰满人妻一区二区三区大胸| 精品国产第一区二区三区观看体验| a级精品国产片在线观看| 欧美成人猛片aaaaaaa| 不卡区在线中文字幕| 欧美成人猛片aaaaaaa| 99热这里只有精品2| 久久夜色精品一区| 国产乱淫av片| 中文字幕第一区二区| 久久人妻少妇嫩草av无码专区 | 少妇的滋味中文字幕bd| 亚洲自拍偷拍网站| 中日韩一级黄色片| 日韩av电影免费观看高清完整版| www.超碰在线观看| 九九国产精品视频| 亚洲一区中文日韩| 欧美黄色高清视频| 久久精品视频网| 成人免费的视频| 国产欧美精品一区二区色综合朱莉| 国产成人在线视频免费播放| 欧美高清视频www夜色资源网| 国产成人午夜电影网| 日韩限制级电影在线观看| 91香蕉视频mp4| 久久久亚洲高清| 国产精品无码专区| 亚洲一区二区中文在线| 欧美色图亚洲视频| 国产精品亚洲第一区在线暖暖韩国| 欧美精选午夜久久久乱码6080| 99久久久国产精品免费蜜臀| 国产亚洲欧美中文| 亚洲一级中文字幕| 视频一区国产视频| 欧美日韩在线播放三区四区| av在线免费不卡| 国产精品久久久一区麻豆最新章节| 免费在线观看污| 日韩国产欧美在线播放| 欧美日韩精品高清| 91蝌蚪国产九色| 亚洲桃色在线一区| 一区二区视频免费看| 国产精品亚洲午夜一区二区三区| 久久免费美女视频| 久久精品—区二区三区舞蹈| 蜜桃av一区二区三区| 精品区一区二区| 亚洲av综合一区二区| 日日摸夜夜添夜夜添国产精品 | 国产精品久久久久久久av| 丁香网亚洲国际| 国产日韩欧美电影| 影音先锋男人在线| 精品一区二区免费| 亚洲精品一区二区三区蜜桃下载 | 91丨porny丨国产| 中文字幕视频一区| 日韩女优一区二区| 99久久久无码国产精品| 亚洲免费毛片网站| 色偷偷一区二区三区| 99久久精品国产导航| 一区二区视频在线| 欧美色图免费看| 野战少妇38p| 轻轻草成人在线| 精品欧美乱码久久久久久1区2区| 国精产品一区一区三区免费视频| 免费观看30秒视频久久| 精品国产免费一区二区三区四区 | 日韩免费观看高清完整版在线观看 | 亚洲一区二区在线免费观看视频| 欧美性感一区二区三区| 欧美熟妇精品一区二区蜜桃视频| 丝袜美腿亚洲一区| 久久综合色鬼综合色| 日本不卡一区视频| 成人动漫一区二区在线| 伊人开心综合网| 欧美高清性hdvideosex| 在线免费观看日韩av| 韩国av一区二区三区| 国产精品丝袜91| 在线亚洲精品福利网址导航| 久久性爱视频网站| 九色porny丨国产精品| 中文字幕一区二区三区四区| 欧洲国产伦久久久久久久| 欧美日韩人妻精品一区在线| 久久se这里有精品| 国产精品国产自产拍高清av | 国产v日产∨综合v精品视频| 国产精品不卡视频| 欧美精品在欧美一区二区少妇| 中文字幕丰满孑伦无码专区| 国产一区二区福利| 亚洲伦在线观看| 日韩视频免费观看高清完整版在线观看 | 激情都市一区二区| 国产精品久久久久久久午夜片| 欧美视频在线一区二区三区 | 精品欧美黑人一区二区三区| 大胸美女被爆操| 99re视频这里只有精品| 日韩电影一二三区| 中文在线资源观看网站视频免费不卡 | 国产精品亚洲成人| 亚洲一区二区在线免费看| 欧美精品一区二区三区久久久 | 亚洲精品国产精品乱码不99| 日韩视频一区二区| 天天操天天操天天操天天操天天操| 制服丝袜在线第一页| 国产真实乱子伦精品视频| 亚洲激情综合网| ww亚洲ww在线观看国产| 欧美亚洲高清一区| 久久午夜精品视频| www国产视频| 成人免费电影视频| 老司机精品视频一区二区三区| 亚洲视频一区在线| www国产精品av| 欧美日韩一区二区在线观看| 国产精品视频在| 少妇户外露出[11p]| av电影天堂一区二区在线观看| 奇米一区二区三区av| 亚洲精品日日夜夜| 国产片一区二区|