asarray
和 ascontiguousarray
都是用于將輸入轉(zhuǎn)換為數(shù)組的函數(shù),但它們有一些不同之處。
asarray
函數(shù)將輸入轉(zhuǎn)換為數(shù)組,如果輸入已經(jīng)是一個(gè)數(shù)組,則不會(huì)進(jìn)行復(fù)制操作,如果輸入是一個(gè)類數(shù)組對(duì)象(如列表、元組等),則會(huì)將其轉(zhuǎn)換為數(shù)組。此外,asarray
默認(rèn)情況下會(huì)保留輸入的內(nèi)存布局。如果輸入是一個(gè)非連續(xù)的數(shù)組(即不是 C 或者 Fortran 連續(xù)的),asarray
會(huì)保留其非連續(xù)性。
ascontiguousarray
函數(shù)與 asarray
類似,也是將輸入轉(zhuǎn)換為數(shù)組,但是它會(huì)確保輸出數(shù)組是連續(xù)的。如果輸入是一個(gè)非連續(xù)的數(shù)組,ascontiguousarray
會(huì)復(fù)制輸入數(shù)組以確保輸出數(shù)組是連續(xù)的。
綜上所述,主要區(qū)別在于對(duì)于非連續(xù)數(shù)組的處理。asarray
會(huì)保留輸入數(shù)組的內(nèi)存布局,而 ascontiguousarray
會(huì)確保輸出數(shù)組是連續(xù)的。