Julia位陣列的再探
上次測試不太完善,得出錯誤的結論3.位陣列的空間不是位元組,而是雙位元組。
其實BitAarry在0.51版文件中有詳細說明。
BitArrays
BitArrays are space-efficient “packed” boolean arrays, which store one bit per boolean value. They can be used similarly to Array{Bool} arrays (which store one byte per boolean value), and can be converted to/from the latter via Array(bitarray) and BitArray(array), respectively.• Vector (a.k.a. 1-dimensional Array)
• BitVector (a.k.a. 1-dimensional BitArray)
那就是說1維BitArray與BitVector實質上是一樣的。在0.6版的聯機幫助中:
help?> BitVector search: BitVector BitArray(dims::Integer...) BitArray{N}(dims::NTuple{N,Int})
BitArray結構需要佔用一定的基本空間。在元素較少的時候,也要至少8位元組。
julia> map(x->(x,sizeof(BitArray(x))),[1,2,4,8,16,32,64,128,256]) 9-element Array{Tuple{Int32,Int32},1}: (1, 8) (2, 8) (4, 8) (8, 8) (16, 8) (32, 8) (64, 8) (128, 16) (256, 32)
文件說Array建構函式返回的是未初始化的值,
Array(dims)
Array{T}(dims) constructs an uninitialized dense array with element type T. dims may be a tuple or a series of integer arguments. The syntax Array(T, dims) is also available, but deprecated.
聯機幫助也是
help?> BitArray search: BitArray BitArray(dims::Integer...) BitArray{N}(dims::NTuple{N,Int}) Construct an uninitialized BitArray with the given dimensions. Behaves identically to the Array constructor.
在實際操作中,Array明顯返回不確定的值。
julia> Array(Int8,10),Array(Int16,10) (Int8[-32, 78, 7, 19, -112, 74, 10, 15, -16, 78], Int16[66, 0, 105, 0, 116, 0, 65, 0, 114, 0])
雖然BitArray觀察到的都是false,為了確保得到需要的值,還是用trues和false保險。
julia> BitArray(10),trues(10),falses(10) (Bool[false, false, false, false, false, false, false, false, false, false], Bool[true, true, true, true, true, true, true, true, true, true], Bool[false, false, false, false, false, false, false, false, false, false])
0.5版的聯機幫助中顯示BitArray有len成員,實際測試Aarry沒有。
julia> BitArray(2, 2) 2××2 BitArray{2}: false false false false julia> BitArray(3, 1) 3××1 BitArray{2}: false false false julia> ba=BitArray(30); julia> ba.len 30 julia> ia=Array{Int}(30); julia> ia.len ERROR: type Array has no field len
相關文章
- Julia的陣列功能陣列
- Julia的矩陣運算矩陣
- 二位陣列陣列
- Julia 語言中的生成器表示式與陣列推導式陣列
- 二位陣列排序陣列排序
- 二進位制陣列陣列
- 兩個有序陣列的中位數陣列
- js陣列操作——物件陣列根據某個相同的欄位分組JS陣列物件
- systemtap 探祕(三)- 型別、變數和陣列型別變數陣列
- 二進位制陣列 subarray() 方法陣列
- 指標和二位陣列指標陣列
- 尋找兩個有序陣列的中位數陣列
- 4. 兩個排序陣列的中位數排序陣列
- PHP指定欄位的多維陣列排序方法PHP陣列排序
- 如何實現簡單的位陣列(bit array)陣列
- 二進位制陣列 buffer 屬性陣列
- 二進位制陣列 length 屬性陣列
- 演算法-兩個排序陣列的中位數演算法排序陣列
- 陣列1——求一個陣列的最大子陣列陣列
- Javascript - 陣列和陣列的方法JavaScript陣列
- 再探強化學習強化學習
- 再學JavaScript ES(6-10)全版本語法大全(4)- 偽陣列轉換為陣列JavaScript陣列
- PHP陣列多個欄位分別排序PHP陣列排序
- C語言中陣列溢位是什麼C語言陣列
- JavaScript二進位制陣列建立注意點JavaScript陣列
- 二進位制陣列 byteLength 屬性陣列
- 二進位制陣列 byteOffset 屬性陣列
- Linux 核心裡的資料結構——位陣列位陣列宣告體系結構特定的位操作通Linux資料結構陣列
- 陣列--移除陣列中指定的元素,不改變原陣列和改變原陣列陣列
- 尋找兩個正序陣列中的中位數陣列
- LeetCode-兩個排序陣列的中位數LeetCode排序陣列
- [Python手撕]兩個升序陣列的中位數Python陣列
- [求解]陣列,分成倆個陣列,陣列值之和的相差最小。陣列
- 再探JVM記憶體模型JVM記憶體模型
- 遊戲巨頭“再探”3A遊戲
- 再探JS---eval函式JS函式
- 10、DNS隧道技術再探DNS
- 第二話 再探多型多型