默認數組維數

默認數組維數

數組一種構造型數據類型,它是由一組相同類型的成份(或稱為元素)構成的變數組。同一數組中的元素的名字是用數組名再加上相應的下標,因此又稱下標變數 。下標一般是採用有序的簡單數據類型。默認數組維數是指用戶在程式中定義數組時,不自己定義數組維數,使用系統或庫函式已經定義好的數組維數。

簡介

數組通常採用整數來作下標,在多維數組之中採用一系列有序的整數來標註,如在[ 3,1,5 ] ,這種整數列表之中整數的個數始終相同,且被稱為數組維數。關於每個數組維度的邊界稱為“維”。維度為 k的數組通常被稱為 k維。默認數組維數即在定義數組大小時,使用系統或庫函式已經定義好的數組維數。在很多方面都有套用,如在資料庫中,返回有關查詢操作;在機器學習中,分類問題和維數約簡,都有用到默認數組維數。

數組類型

數組類型變數採用如下方法表示,即一個基類型後面帶有空的中括弧[ ]。還有一種做法,Java接受C風格的聲明,即在數組名後可以放置中括弧。

以下聲明是等價的:

int [ ] arrayOfInts;

int arrayOfInts [ ];

無論哪一種情況,array Of Ints均聲明為一個整型數組。此數組的大小尚不可知,因為我們只定義了數組類型變數。至此還沒有創建此數組類的一個具體實例,即沒有為之關聯存儲空間。聲明一個數組類型變數時指定數組的長度甚至是不可能的。

對象數組可以採用同樣的方式創建:

String [ ] someStrings;

Button someButtons [ ];

數組創建和初始化

new操作符用於創建一個數組的實例。在new操作符之後,我們指定了數組的基類型,並用一個中括弧括起的表達式來指定數組的長度:

arrayOfInts = new int [42];

someStrings = new String [ number + 2 ];

當然也可以將聲明和分配數組的步驟合二為一:

double [ ] someNumbers = new double [20];

Component widgets [ ] = new Component [12];

與C中一樣,數組以0作為起始索引。因此,someNumbers[ ]的第一個元素索引 為0,最後一個元素的索引為19。在創建之後,數組元素會初始化為其類型的默認值。對於數字類型,這說明這些元素都將初始化為0:

int [ ] grades = new int [30];

grades[0] = 99;

grades[1] = 72;

// grades[2] == 0

對象數組的元素是對象的引用,而不是對象的具體實例。每個元素的默認值因而為 null,直到我們為其賦以適當對象的實例為止:

String names [ ] = new String [4];

names [0] = new String();

names [1] = “Boofa”;

names [2] = someObject.toString();

// names [3] == null

這裡有一個重要的區別,它可能會導致混淆。在許多其他語言中,創建數組的操作與為其元素分配存儲空間的操作完全相同。在Java中,一個新分配的對象數組實際上只包含引用變數,而且每個值都是null。這並不是說,一個空數組就沒有相關的存儲空間;在此需要空間來保存這些引用(數組中的空“槽”)。

維數約簡

維數約簡又稱為降維,是機器學習的一種必要手段。若資料庫X是屬於n維空間的,通過特徵提取或者特徵選擇的方法,將原空間的維數降至m維,要求n遠大於m,滿足:m維空間的特性能反映原空間數據的特徵,這個過程稱之為維數約簡。

維數約簡是相對於維數災難或者說是高維數據來提出的,很明顯,其意義就是降低原來的維數,並保證原資料庫的完整性,在約簡後的空間中執行後續程式將大大減少運算量,提高數據挖掘效率,且挖掘出來的結果與原有數據集所獲得結果基本一致。更廣泛的說就是防止了維數災難的發生。

相關詞條

熱門詞條

聯絡我們