Javascript khởi tạo mảng 2d

Julia, giống như hầu hết các ngôn ngữ tính toán kỹ thuật, cung cấp triển khai mảng hạng nhất. Hầu hết các ngôn ngữ tính toán kỹ thuật đều chú ý rất nhiều đến việc triển khai mảng của chúng với chi phí của các vùng chứa khác. Julia không xử lý mảng theo bất kỳ cách đặc biệt nào. Thư viện mảng được triển khai gần như hoàn toàn trong chính Julia và lấy hiệu suất của nó từ trình biên dịch, giống như bất kỳ mã nào khác được viết bằng Julia. Như vậy, cũng có thể xác định các loại mảng tùy chỉnh bằng cách kế thừa từ. Xem để biết thêm chi tiết về cách triển khai loại mảng tùy chỉnh

Mảng là một tập hợp các đối tượng được lưu trữ trong một lưới đa chiều. Mảng không chiều được cho phép, xem. Trong trường hợp chung nhất, một mảng có thể chứa các đối tượng kiểu. Đối với hầu hết các mục đích tính toán, mảng phải chứa các đối tượng thuộc loại cụ thể hơn, chẳng hạn như hoặc

Nói chung, không giống như nhiều ngôn ngữ tính toán kỹ thuật khác, Julia không mong đợi các chương trình được viết theo kiểu véc tơ để đạt được hiệu suất. Trình biên dịch của Julia sử dụng suy luận kiểu và tạo mã được tối ưu hóa để lập chỉ mục mảng vô hướng, cho phép các chương trình được viết theo kiểu thuận tiện và dễ đọc mà không làm giảm hiệu suất và đôi khi sử dụng ít bộ nhớ hơn

Ở Julia, tất cả các đối số của hàm là [i. e. bằng con trỏ]. Một số ngôn ngữ máy tính kỹ thuật truyền mảng theo giá trị và trong khi điều này ngăn việc sửa đổi ngẫu nhiên bởi callees của một giá trị trong trình gọi, nó khiến việc tránh sao chép mảng không mong muốn trở nên khó khăn. Theo quy ước, tên hàm kết thúc bằng

julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
3 cho biết rằng nó sẽ thay đổi hoặc hủy giá trị của một hoặc nhiều đối số của nó [ví dụ: so sánh và ]. Người được gọi phải tạo bản sao rõ ràng để đảm bảo rằng họ không sửa đổi đầu vào mà họ không có ý định thay đổi. Nhiều chức năng không đột biến được triển khai bằng cách gọi một chức năng cùng tên với một
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
3 được thêm vào ở cuối trên một bản sao rõ ràng của đầu vào và trả lại bản sao đó

HàmMô tảloại phần tử chứa trong
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
8số lượng phần tử trong
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
8số lượng thứ nguyên của
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
8a bộ chứa thứ nguyên của
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
8kích thước của
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
8 dọc theo thứ nguyên
julia> [1; 2;; 3; 4;; 5; 6;;;
        7; 8;; 9; 10;; 11; 12]
2×3×2 Array{Int64, 3}:
[:, :, 1] =
 1  3  5
 2  4  6

[:, :, 2] =
 7   9  11
 8  10  12
7a bộ chứa các chỉ số hợp lệ của
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
8a phạm vi biểu thị các chỉ số hợp lệ dọc theo thứ nguyên
julia> [1; 2;; 3; 4;; 5; 6;;;
        7; 8;; 9; 10;; 11; 12]
2×3×2 Array{Int64, 3}:
[:, :, 1] =
 1  3  5
 2  4  6

[:, :, 2] =
 7   9  11
 8  10  12
7một bộ lặp hiệu quả để truy cập từng thứ nguyên

Nhiều chức năng để xây dựng và khởi tạo mảng được cung cấp. Trong danh sách các hàm như vậy sau đây, các lệnh gọi có đối số

julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
17 có thể nhận một bộ kích thước kích thước duy nhất hoặc một loạt kích thước kích thước được truyền dưới dạng một số đối số thay đổi. Hầu hết các hàm này cũng chấp nhận đầu vào đầu tiên
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
18, là kiểu phần tử của mảng. Nếu loại
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
18 bị bỏ qua, nó sẽ mặc định là

FunctionDescriptionan dày đặc chưa khởi tạo một
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
52 trong số tất cả các số không,
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
52 trong số tất cả các số một, với tất cả các giá trị
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
59a
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
58 với tất cả các giá trị
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
92một mảng chứa cùng dữ liệu như
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
8, nhưng với các kích thước khác nhau sao chép
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
8sao chép
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
8, sao chép đệ quy các phần tử của nómột mảng chưa khởi tạo của cùng một . ], nhưng với loại phần tử và kích thước được chỉ định. Đối số thứ hai và thứ ba đều là tùy chọn, mặc định là loại phần tử và kích thước của
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
8 nếu bị bỏ qua. một mảng có cùng dữ liệu nhị phân như
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
8, nhưng có loại phần tử
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
18an
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
52 với các giá trị ngẫu nhiên, iid và được phân phối đồng đều trong khoảng thời gian nửa mở $[0, 1]$một
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
52 với các giá trị ngẫu nhiên, iid và phân phối chuẩn chuẩn
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
910-by-
julia> [1; 2;; 3; 4;; 5; 6;;;
        7; 8;; 9; 10;; 11; 12]
2×3×2 Array{Int64, 3}:
[:, :, 1] =
 1  3  5
 2  4  6

[:, :, 2] =
 7   9  11
 8  10  12
7 ma trận đồng nhất. Yêu cầu
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
912 cho. một phạm vi gồm các phần tử khoảng cách tuyến tính của
julia> [1; 2;; 3; 4;; 5; 6;;;
        7; 8;; 9; 10;; 11; 12]
2×3×2 Array{Int64, 3}:
[:, :, 1] =
 1  3  5
 2  4  6

[:, :, 2] =
 7   9  11
 8  10  12
7 từ
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
916 đến
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
917 điền vào mảng
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
8 với giá trị
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
920an
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
52 điền vào giá trị
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
920. Đặc biệt,
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
924 xây dựng một
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
52 không chiều chứa
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
920

Để xem các cách khác nhau mà chúng ta có thể truyền kích thước cho các hàm này, hãy xem xét các ví dụ sau

julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
2

Ở đây,

julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
927 là a và đối số đầu tiên — loại phần tử — là tùy chọn, mặc định là
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
1

Mảng cũng có thể được xây dựng trực tiếp với dấu ngoặc vuông; . e. , một vectơ] chứa các đối số được phân tách bằng dấu phẩy làm thành phần của nó. Loại phần tử [] của mảng kết quả được xác định tự động bởi các loại đối số bên trong dấu ngoặc nhọn. Nếu tất cả các đối số là cùng một loại, thì đó là

julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
931. Nếu tất cả chúng đều có một điểm chung thì chúng sẽ được chuyển đổi thành loại đó bằng cách sử dụng và loại đó là
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
931 của mảng. Mặt khác, một mảng không đồng nhất có thể chứa bất kỳ thứ gì — một
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
935 — được tạo;

julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
9

Nếu các đối số bên trong dấu ngoặc vuông được phân tách bằng dấu chấm phẩy đơn [

julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
937] hoặc dòng mới thay vì dấu phẩy, thì nội dung của chúng được nối với nhau theo chiều dọc thay vì chính các đối số được sử dụng làm phần tử

julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
2

Tương tự, nếu các đối số được phân tách bằng tab hoặc dấu cách hoặc dấu chấm phẩy kép, thì nội dung của chúng được nối theo chiều ngang với nhau

julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
3

Dấu chấm phẩy đơn [hoặc dòng mới] và dấu cách [hoặc tab] có thể được kết hợp để nối cả chiều ngang và chiều dọc cùng một lúc

julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
4

Dấu cách [và tab] có mức độ ưu tiên cao hơn dấu chấm phẩy, thực hiện bất kỳ phép nối ngang nào trước rồi mới nối kết quả. Mặt khác, sử dụng dấu chấm phẩy kép cho phép nối ngang, thực hiện bất kỳ phép nối dọc nào trước khi nối kết quả theo chiều ngang

julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4

Giống như

julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
937 và
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
939 nối ở chiều thứ nhất và chiều thứ hai, việc sử dụng nhiều dấu chấm phẩy hơn sẽ mở rộng sơ đồ chung này. Số lượng dấu chấm phẩy trong dấu phân cách chỉ định thứ nguyên cụ thể, do đó,
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
940 nối trong thứ nguyên thứ ba,
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
941 trong thứ nguyên thứ 4, v.v. Ít dấu chấm phẩy được ưu tiên hơn, vì vậy các kích thước thấp hơn thường được nối trước

julia> [1; 2;; 3; 4;; 5; 6;;;
        7; 8;; 9; 10;; 11; 12]
2×3×2 Array{Int64, 3}:
[:, :, 1] =
 1  3  5
 2  4  6

[:, :, 2] =
 7   9  11
 8  10  12

Giống như trước đây, khoảng trắng [và tab] để nối theo chiều ngang có mức độ ưu tiên cao hơn bất kỳ số lượng dấu chấm phẩy nào. Do đó, các mảng chiều cao hơn cũng có thể được viết bằng cách chỉ định các hàng của chúng trước, với các phần tử của chúng được sắp xếp theo văn bản theo cách tương tự như bố cục của chúng.

julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
1

Mặc dù cả hai đều có nghĩa là nối trong chiều thứ hai, khoảng trắng [hoặc tab] và

julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
939 không thể xuất hiện trong cùng một biểu thức mảng trừ khi dấu chấm phẩy kép chỉ đóng vai trò là ký tự "tiếp tục dòng". Điều này cho phép một phép nối ngang duy nhất trải rộng trên nhiều dòng [không ngắt dòng được hiểu là nối dọc]

julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
5

Dấu chấm phẩy kết thúc cũng có thể được sử dụng để thêm các thứ nguyên có độ dài 1 ở cuối

julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
9

Tổng quát hơn, phép nối có thể được thực hiện thông qua hàm. Các cú pháp này là cách viết tắt của các lệnh gọi hàm mà bản thân chúng là các hàm tiện lợi

SyntaxFunctionDescription nối các mảng đầu vào dọc theo [các] chiều
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
15
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
946viết tắt của `cat[A. ; . ;

Một mảng với một loại phần tử cụ thể có thể được xây dựng bằng cú pháp

julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
954. Điều này sẽ xây dựng một mảng 1-d với loại phần tử
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
18, được khởi tạo để chứa các phần tử
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
8,
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
957,
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
958, v.v. Ví dụ:
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
959 xây dựng một mảng không đồng nhất có thể chứa bất kỳ giá trị nào

Tương tự, cú pháp nối có thể được thêm tiền tố vào một loại để chỉ định loại phần tử của kết quả

julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
90

Sự hiểu biết cung cấp một cách tổng quát và mạnh mẽ để xây dựng các mảng. Cú pháp hiểu tương tự như ký hiệu xây dựng tập hợp trong toán học

julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
91

Ý nghĩa của dạng này là

julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
960 được đánh giá với các biến
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
920,
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
962, v.v. nhận từng giá trị trong danh sách giá trị đã cho của chúng. Các giá trị có thể được chỉ định là bất kỳ đối tượng có thể lặp lại nào, nhưng thường sẽ là các phạm vi như
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
963 hoặc
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
964 hoặc các mảng giá trị rõ ràng như
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
965. Kết quả là một mảng dày đặc N-d với các kích thước là sự nối các kích thước của các phạm vi biến
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
966,
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
967, v.v. và mỗi đánh giá
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
960 trả về một giá trị vô hướng

Ví dụ sau tính toán trung bình có trọng số của phần tử hiện tại và hàng xóm bên trái và bên phải của nó dọc theo lưới 1 chiều.

julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
92

Kiểu mảng kết quả phụ thuộc vào kiểu của các phần tử được tính giống như do. Để kiểm soát loại một cách rõ ràng, một loại có thể được thêm vào phần hiểu. Ví dụ: chúng tôi có thể yêu cầu kết quả ở độ chính xác duy nhất bằng cách viết

julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
93

Sự hiểu biết cũng có thể được viết mà không có dấu ngoặc vuông kèm theo, tạo ra một đối tượng được gọi là trình tạo. Đối tượng này có thể được lặp lại để tạo ra các giá trị theo yêu cầu, thay vì phân bổ một mảng và lưu trữ chúng trước [xem phần ]. Ví dụ: biểu thức sau tính tổng một chuỗi mà không cấp phát bộ nhớ

julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
94

Khi viết biểu thức trình tạo có nhiều thứ nguyên bên trong danh sách đối số, cần có dấu ngoặc đơn để tách trình tạo khỏi các đối số tiếp theo

julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
95

Tất cả các biểu thức được phân tách bằng dấu phẩy sau

julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
969 được hiểu là phạm vi. Thêm dấu ngoặc đơn cho phép chúng tôi thêm đối số thứ ba vào

julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
96

Trình tạo được thực hiện thông qua các chức năng bên trong. Giống như các hàm bên trong được sử dụng ở những nơi khác trong ngôn ngữ, các biến từ phạm vi kèm theo có thể được "bắt giữ" trong hàm bên trong. Ví dụ:

julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
971 nắm bắt ba biến
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
972,
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
973 và
julia> [1; 2;; 3; 4;; 5; 6;;;
        7; 8;; 9; 10;; 11; 12]
2×3×2 Array{Int64, 3}:
[:, :, 1] =
 1  3  5
 2  4  6

[:, :, 2] =
 7   9  11
 8  10  12
7 từ phạm vi kèm theo. Các biến được chụp có thể đưa ra những thách thức về hiệu suất;

Phạm vi trong trình tạo và khả năng hiểu có thể phụ thuộc vào phạm vi trước đó bằng cách viết nhiều từ khóa

julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
969

julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
97

Trong những trường hợp như vậy, kết quả luôn là 1-d

Các giá trị đã tạo có thể được lọc bằng từ khóa

julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
976

julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
98

Cú pháp chung để lập chỉ mục cho mảng n chiều

julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
8 là

julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
99

trong đó mỗi

julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
978 có thể là một số nguyên vô hướng, một mảng các số nguyên hoặc bất kỳ số nào khác. Điều này bao gồm [
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
980] để chọn tất cả các chỉ số trong toàn bộ thứ nguyên, phạm vi của biểu mẫu
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
981 hoặc
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
982 để chọn các phần phụ liền kề hoặc phân tầng và các mảng booleans để chọn các phần tử tại chỉ mục
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
59 của chúng

Nếu tất cả các chỉ số là vô hướng, thì kết quả

julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
984 là một phần tử duy nhất từ ​​mảng
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
8. Mặt khác,
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
984 là một mảng có cùng số chiều với tổng các chiều của tất cả các chỉ số

Ví dụ: nếu tất cả các chỉ số

julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
978 đều là vectơ, thì hình dạng của
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
984 sẽ là
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
989, với vị trí
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
990 của
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
984 chứa giá trị
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
992

Ví dụ

julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
20

Lưu ý kích thước của mảng kết quả khác nhau như thế nào trong hai trường hợp cuối cùng

Nếu đổi

julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
993 thành ma trận hai chiều thì
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
984 trở thành mảng chiều
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
995 có hình dạng
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
996. Ma trận thêm một thứ nguyên

Ví dụ

julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
21

Vị trí

julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
997 chứa giá trị tại
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
998. Tất cả các kích thước được lập chỉ mục với vô hướng đều bị loại bỏ. Ví dụ: nếu
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
999 là một mảng các chỉ số, thì kết quả của
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
200 là một mảng có kích thước
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
201. Phần tử thứ
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
202 của nó được điền bởi
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
203

Là một phần đặc biệt của cú pháp này, từ khóa

julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
204 có thể được sử dụng để biểu thị chỉ mục cuối cùng của mỗi thứ nguyên trong dấu ngoặc đơn, được xác định bởi kích thước của mảng trong cùng được lập chỉ mục. Cú pháp lập chỉ mục không có từ khóa
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
204 tương đương với một cuộc gọi đến

julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
22

Ví dụ

julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
23

Cú pháp chung để gán giá trị trong mảng n chiều

julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
8 là

julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
24

trong đó mỗi

julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
978 có thể là một số nguyên vô hướng, một mảng các số nguyên hoặc bất kỳ số nào khác. Điều này bao gồm [
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
980] để chọn tất cả các chỉ số trong toàn bộ thứ nguyên, phạm vi của biểu mẫu
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
981 hoặc
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
982 để chọn các phần phụ liền kề hoặc phân tầng và các mảng booleans để chọn các phần tử tại chỉ mục
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
59 của chúng

Nếu tất cả các chỉ số

julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
978 là số nguyên, thì giá trị ở vị trí
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
215 của
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
8 được ghi đè bằng giá trị của
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
984, chuyển sang vị trí của
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
8 nếu cần

Nếu bất kỳ chỉ mục nào

julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
978 tự nó là một mảng, thì phía bên tay phải của
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
984 cũng phải là một mảng có cùng hình dạng như kết quả của việc lập chỉ mục
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
223 hoặc một vectơ có cùng số phần tử. Giá trị ở vị trí
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
224 của
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
8 được ghi đè bằng giá trị
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
226, chuyển đổi nếu cần. Toán tử gán phần tử khôn ngoan
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
227 có thể được sử dụng để
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
984 trên các vị trí đã chọn

julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
25

Cũng giống như trong , từ khóa

julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
204 có thể được sử dụng để biểu thị chỉ mục cuối cùng của mỗi thứ nguyên trong dấu ngoặc đơn, như được xác định bởi kích thước của mảng được gán vào. Cú pháp gán được lập chỉ mục không có từ khóa
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
204 tương đương với một cuộc gọi đến

julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
26

Ví dụ

julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
27

Trong biểu thức

julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
223, mỗi
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
978 có thể là một chỉ số vô hướng, một mảng các chỉ số vô hướng hoặc một đối tượng đại diện cho một mảng các chỉ số vô hướng và có thể được chuyển đổi thành như vậy bằng cách

  1. một chỉ số vô hướng. Theo mặc định, điều này bao gồm
    • Số nguyên không phải boolean
    • s, hoạt động giống như một bộ số nguyên
      julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
      3×3 Matrix{Int64}:
       0  0  1
       0  0  2
       3  4  5
      
      julia> [1:2; 4;; 1; 3:4]
      3×2 Matrix{Int64}:
       1  1
       2  3
       4  4
      236 bao trùm nhiều chiều [xem bên dưới để biết thêm chi tiết]
  2. Một mảng các chỉ số vô hướng. Điêu nay bao gôm
    • Vectơ và mảng nhiều chiều của số nguyên
    • Các mảng trống như
      julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
      3×3 Matrix{Int64}:
       0  0  1
       0  0  2
       3  4  5
      
      julia> [1:2; 4;; 1; 3:4]
      3×2 Matrix{Int64}:
       1  1
       2  3
       4  4
      936, không chọn phần tử nào
    • Các phạm vi như
      julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
      3×3 Matrix{Int64}:
       0  0  1
       0  0  2
       3  4  5
      
      julia> [1:2; 4;; 1; 3:4]
      3×2 Matrix{Int64}:
       1  1
       2  3
       4  4
      981 hoặc
      julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
      3×3 Matrix{Int64}:
       0  0  1
       0  0  2
       3  4  5
      
      julia> [1:2; 4;; 1; 3:4]
      3×2 Matrix{Int64}:
       1  1
       2  3
       4  4
      982, chọn các tiểu mục liền kề hoặc nối tiếp nhau từ
      julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
      3×3 Matrix{Int64}:
       0  0  1
       0  0  2
       3  4  5
      
      julia> [1:2; 4;; 1; 3:4]
      3×2 Matrix{Int64}:
       1  1
       2  3
       4  4
      240 đến
      julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
      3×3 Matrix{Int64}:
       0  0  1
       0  0  2
       3  4  5
      
      julia> [1:2; 4;; 1; 3:4]
      3×2 Matrix{Int64}:
       1  1
       2  3
       4  4
      241 [bao gồm]
    • Bất kỳ mảng tùy chỉnh nào của các chỉ số vô hướng là một kiểu con của
      julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
      3×3 Matrix{Int64}:
       0  0  1
       0  0  2
       3  4  5
      
      julia> [1:2; 4;; 1; 3:4]
      3×2 Matrix{Int64}:
       1  1
       2  3
       4  4
      49
    • Mảng của
      julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
      3×3 Matrix{Int64}:
       0  0  1
       0  0  2
       3  4  5
      
      julia> [1:2; 4;; 1; 3:4]
      3×2 Matrix{Int64}:
       1  1
       2  3
       4  4
      235 [xem bên dưới để biết thêm chi tiết]
  3. Một đối tượng đại diện cho một mảng các chỉ số vô hướng và có thể được chuyển đổi thành như vậy bằng cách. Theo mặc định, điều này bao gồm
    • [
      julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
      3×3 Matrix{Int64}:
       0  0  1
       0  0  2
       3  4  5
      
      julia> [1:2; 4;; 1; 3:4]
      3×2 Matrix{Int64}:
       1  1
       2  3
       4  4
      980], đại diện cho tất cả các chỉ số trong toàn bộ thứ nguyên hoặc trên toàn bộ mảng
    • Mảng booleans, chọn các phần tử tại chỉ số
      julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
      3×3 Matrix{Int64}:
       0  0  1
       0  0  2
       3  4  5
      
      julia> [1:2; 4;; 1; 3:4]
      3×2 Matrix{Int64}:
       1  1
       2  3
       4  4
      59 của chúng [xem bên dưới để biết thêm chi tiết]

Vài ví dụ

julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
28

Đối tượng đặc biệt

julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
235 đại diện cho một chỉ mục vô hướng hoạt động giống như một bộ số nguyên
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
236 bao trùm nhiều chiều. Ví dụ

julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
29

Nếu xét riêng, điều này có vẻ tương đối tầm thường; . Tuy nhiên, khi được kết hợp với các biểu mẫu lập chỉ mục và trình vòng lặp khác mang lại

julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
250es, điều này có thể tạo ra mã rất thanh lịch và hiệu quả. Xem bên dưới và để biết một số ví dụ nâng cao hơn, hãy xem bài đăng trên blog này về các thuật toán và phép lặp đa chiều

Mảng của

julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
235 cũng được hỗ trợ. Chúng đại diện cho một tập hợp các chỉ số vô hướng mà mỗi chiều dài khoảng 5236 chiều, cho phép một hình thức lập chỉ mục đôi khi được gọi là lập chỉ mục theo điểm. Ví dụ: nó cho phép truy cập các phần tử đường chéo từ "trang" đầu tiên của
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
8 từ phía trên

julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
30

Điều này có thể được thể hiện đơn giản hơn nhiều với và bằng cách kết hợp nó với một chỉ số nguyên thông thường [thay vì trích xuất

julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
255 đầu tiên từ
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
8 như một bước riêng biệt]. Nó thậm chí có thể được kết hợp với một
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
980 để trích xuất cả hai đường chéo từ hai trang cùng một lúc

julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
31

Cảnh báo

julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
250 và mảng của
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
250 không tương thích với từ khóa
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
204 để biểu thị chỉ mục cuối cùng của thứ nguyên. Không sử dụng
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
204 trong các biểu thức lập chỉ mục có thể chứa
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
250 hoặc các mảng của chúng

Thường được gọi là lập chỉ mục logic hoặc lập chỉ mục với mặt nạ logic, lập chỉ mục bằng một mảng boolean chọn các phần tử tại các chỉ mục có giá trị của nó là

julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
59. Lập chỉ mục theo vectơ boolean
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
957 thực sự giống như lập chỉ mục theo vectơ số nguyên được trả về bởi. Tương tự, lập chỉ mục theo mảng boolean chiều
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
236 thực sự giống như lập chỉ mục theo vectơ của
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
235 trong đó các giá trị của nó là
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
59. Chỉ mục logic phải là một vectơ có cùng độ dài với thứ nguyên mà nó lập chỉ mục hoặc nó phải là chỉ mục duy nhất được cung cấp và khớp với kích thước và chiều của mảng mà nó lập chỉ mục vào. Nói chung sẽ hiệu quả hơn khi sử dụng trực tiếp các mảng boolean làm chỉ mục thay vì gọi trước

julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
32

Cách thông thường để lập chỉ mục thành một mảng 5236 chiều ________ là sử dụng chính xác 5236 chỉ mục; . Ví dụ, trong mảng ba chiều

julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
272,
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
273 sẽ chọn số ở hàng thứ hai của cột thứ ba trong "trang" đầu tiên của mảng. Điều này thường được gọi là lập chỉ mục cartesian

Khi chính xác một chỉ mục

julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
274 được cung cấp, chỉ mục đó không còn đại diện cho một vị trí trong một chiều cụ thể của mảng. Thay vào đó, nó chọn phần tử thứ
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
274 bằng cách sử dụng thứ tự lặp lại chính của cột kéo dài tuyến tính toàn bộ mảng. Điều này được gọi là lập chỉ mục tuyến tính. Về cơ bản, nó xử lý mảng như thể nó đã được định hình lại thành một vectơ một chiều với

julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
33

Một chỉ mục tuyến tính trong mảng

julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
8 có thể được chuyển đổi thành một
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
250 để lập chỉ mục cartesian với
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
279 [xem ] và một tập hợp các chỉ số cartesian
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
236 có thể được chuyển đổi thành một chỉ mục tuyến tính với
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
282 [xem ]

julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
34

Điều quan trọng cần lưu ý là có sự bất đối xứng rất lớn trong hiệu suất của các chuyển đổi này. Chuyển đổi một chỉ số tuyến tính thành một tập hợp các chỉ số cartesian yêu cầu chia và lấy phần còn lại, trong khi đi theo cách khác chỉ là nhân và cộng. Trong các bộ xử lý hiện đại, phép chia số nguyên có thể chậm hơn 10-50 lần so với phép nhân. Trong khi một số mảng - giống như chính nó - được triển khai bằng cách sử dụng một đoạn bộ nhớ tuyến tính và sử dụng trực tiếp chỉ mục tuyến tính trong quá trình triển khai của chúng, thì các mảng khác - như - cần có bộ chỉ số cartesian đầy đủ để thực hiện tra cứu [xem nội quan cái nào]. Như vậy, khi lặp lại toàn bộ mảng, tốt hơn hết là lặp lại thay vì

julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
288. Cái trước không chỉ nhanh hơn nhiều trong trường hợp
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
8 là
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
290 mà còn hỗ trợ OffsetArrays nữa

Ngoài lập chỉ mục tuyến tính, một mảng chiều

julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
236 có thể được lập chỉ mục với ít hơn hoặc nhiều hơn chỉ mục
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
236 trong một số trường hợp nhất định

Các chỉ số có thể được bỏ qua nếu các thứ nguyên theo sau không được lập chỉ mục đều có độ dài một. Nói cách khác, các chỉ mục theo sau chỉ có thể được bỏ qua nếu chỉ có một giá trị khả dĩ mà các chỉ mục bị bỏ qua đó có thể dành cho một biểu thức lập chỉ mục trong giới hạn. Ví dụ: một mảng bốn chiều có kích thước

julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
293 có thể được lập chỉ mục chỉ với ba chỉ số vì thứ nguyên bị bỏ qua [thứ nguyên thứ tư] có độ dài bằng một. Lưu ý rằng lập chỉ mục tuyến tính được ưu tiên hơn quy tắc này

julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
35

Khi bỏ qua tất cả các chỉ mục với

julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
294, ngữ nghĩa này cung cấp một thành ngữ đơn giản để truy xuất phần tử duy nhất trong một mảng và đồng thời đảm bảo rằng chỉ có một phần tử

Tương tự, có thể cung cấp nhiều hơn

julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
236 chỉ số nếu tất cả các chỉ số nằm ngoài thứ nguyên của mảng là
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
296 [hoặc tổng quát hơn là phần tử đầu tiên và duy nhất của
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
297 trong đó
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
298 là số thứ nguyên cụ thể đó]. Điều này cho phép các vectơ được lập chỉ mục giống như ma trận một cột, chẳng hạn

julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
36

Các cách được đề xuất để lặp lại toàn bộ mảng là

julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
37

Cấu trúc đầu tiên được sử dụng khi bạn cần giá trị, nhưng không phải chỉ mục, của từng phần tử. Trong cấu trúc thứ hai,

julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
274 sẽ là một
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
300 nếu
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
8 là một kiểu mảng có lập chỉ mục tuyến tính nhanh;

julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
38

Ngược lại với

julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
303, lặp với cung cấp một cách hiệu quả để lặp trên bất kỳ loại mảng nào

Nếu bạn viết một loại tùy chỉnh, bạn có thể chỉ định rằng nó có lập chỉ mục tuyến tính nhanh bằng cách sử dụng

julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
39

Cài đặt này sẽ khiến phép lặp

julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
304 trên một
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
307 sử dụng số nguyên. Nếu bạn không chỉ định đặc điểm này, giá trị mặc định
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
308 sẽ được sử dụng

Các toán tử sau được hỗ trợ cho mảng

  1. Số học một ngôi –
    julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
    3×3 Matrix{Int64}:
     0  0  1
     0  0  2
     3  4  5
    
    julia> [1:2; 4;; 1; 3:4]
    3×2 Matrix{Int64}:
     1  1
     2  3
     4  4
    309,
    julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
    3×3 Matrix{Int64}:
     0  0  1
     0  0  2
     3  4  5
    
    julia> [1:2; 4;; 1; 3:4]
    3×2 Matrix{Int64}:
     1  1
     2  3
     4  4
    310
  2. Số học nhị phân –
    julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
    3×3 Matrix{Int64}:
     0  0  1
     0  0  2
     3  4  5
    
    julia> [1:2; 4;; 1; 3:4]
    3×2 Matrix{Int64}:
     1  1
     2  3
     4  4
    309,
    julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
    3×3 Matrix{Int64}:
     0  0  1
     0  0  2
     3  4  5
    
    julia> [1:2; 4;; 1; 3:4]
    3×2 Matrix{Int64}:
     1  1
     2  3
     4  4
    310,
    julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
    3×3 Matrix{Int64}:
     0  0  1
     0  0  2
     3  4  5
    
    julia> [1:2; 4;; 1; 3:4]
    3×2 Matrix{Int64}:
     1  1
     2  3
     4  4
    313,
    julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
    3×3 Matrix{Int64}:
     0  0  1
     0  0  2
     3  4  5
    
    julia> [1:2; 4;; 1; 3:4]
    3×2 Matrix{Int64}:
     1  1
     2  3
     4  4
    314,
    julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
    3×3 Matrix{Int64}:
     0  0  1
     0  0  2
     3  4  5
    
    julia> [1:2; 4;; 1; 3:4]
    3×2 Matrix{Int64}:
     1  1
     2  3
     4  4
    315,
    julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
    3×3 Matrix{Int64}:
     0  0  1
     0  0  2
     3  4  5
    
    julia> [1:2; 4;; 1; 3:4]
    3×2 Matrix{Int64}:
     1  1
     2  3
     4  4
    316
  3. So sánh –
    julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
    3×3 Matrix{Int64}:
     0  0  1
     0  0  2
     3  4  5
    
    julia> [1:2; 4;; 1; 3:4]
    3×2 Matrix{Int64}:
     1  1
     2  3
     4  4
    317,
    julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
    3×3 Matrix{Int64}:
     0  0  1
     0  0  2
     3  4  5
    
    julia> [1:2; 4;; 1; 3:4]
    3×2 Matrix{Int64}:
     1  1
     2  3
     4  4
    318,
    julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
    3×3 Matrix{Int64}:
     0  0  1
     0  0  2
     3  4  5
    
    julia> [1:2; 4;; 1; 3:4]
    3×2 Matrix{Int64}:
     1  1
     2  3
     4  4
    319 [],
    julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
    3×3 Matrix{Int64}:
     0  0  1
     0  0  2
     3  4  5
    
    julia> [1:2; 4;; 1; 3:4]
    3×2 Matrix{Int64}:
     1  1
     2  3
     4  4
    321

Để cho phép vector hóa thuận tiện các phép toán và các phép toán khác, Julia

julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
322, e. g.
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
323 hoặc
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
324, đối với các phép toán theo nguyên tố trên mảng hoặc hỗn hợp của mảng và vô hướng [một phép toán]; . g.
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
325

Ngoài ra, mọi toán tử nhị phân đều hỗ trợ a có thể được áp dụng cho mảng [và sự kết hợp của mảng và vô hướng] theo cách như vậy, e. g.

julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
326

Lưu ý rằng các so sánh như

julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
317 hoạt động trên toàn bộ mảng, đưa ra một câu trả lời boolean duy nhất. Sử dụng các toán tử dấu chấm như
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
328 để so sánh theo từng phần tử. [Đối với các hoạt động so sánh như
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
329, chỉ phiên bản
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
330 theo phần tử được áp dụng cho mảng. ]

Cũng lưu ý sự khác biệt giữa

julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
331, theo từng phần tử so với
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
240 và
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
335, và , tìm thấy giá trị lớn nhất trong phạm vi
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
240. Mối quan hệ tương tự giữ cho
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
338 và
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
339

Đôi khi rất hữu ích khi thực hiện các phép toán nhị phân theo từng phần tử trên các mảng có kích thước khác nhau, chẳng hạn như thêm một vectơ vào mỗi cột của ma trận. Một cách không hiệu quả để làm điều này là sao chép vectơ theo kích thước của ma trận

julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
40

Điều này là lãng phí khi các kích thước trở nên lớn, vì vậy Julia cung cấp , mở rộng các kích thước đơn lẻ trong các đối số mảng để khớp với kích thước tương ứng trong mảng khác mà không cần sử dụng thêm bộ nhớ và áp dụng hàm đã cho theo từng phần tử

julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
41

chẳng hạn như

julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
341 và
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
342 tương đương với các cuộc gọi
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
332 [ngoại trừ việc chúng hợp nhất, như ]. Ngoài ra còn có một chức năng để chỉ định một đích rõ ràng [cũng có thể được truy cập theo kiểu hợp nhất bằng cách gán
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
227]. Trên thực tế,
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
322 tương đương với
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
347, cung cấp một cú pháp thuận tiện để quảng bá bất kỳ chức năng nào []. Lồng các "cuộc gọi dấu chấm"
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
348 [bao gồm các cuộc gọi đến
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
341, v.v.] vào một cuộc gọi
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
332 duy nhất

Ngoài ra, không giới hạn đối với mảng [xem tài liệu về chức năng]; . Theo mặc định, chỉ một số loại đối số được coi là vô hướng, bao gồm [nhưng không giới hạn ở]

julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
352,
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
353,
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
354,
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
355,
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
356 và một số đối số đơn phổ biến như
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
357 và
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
358. Tất cả các đối số khác được lặp lại hoặc lập chỉ mục thành phần tử

julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
42

Đôi khi, bạn muốn một vùng chứa [như một mảng] thường tham gia phát sóng được "bảo vệ" khỏi hành vi lặp lại của phát sóng trên tất cả các phần tử của nó. Bằng cách đặt nó bên trong một thùng chứa khác [như một phần tử đơn lẻ], quảng bá sẽ coi nó là một giá trị duy nhất

julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
43

Kiểu mảng cơ sở trong Julia là kiểu trừu tượng. Nó được tham số hóa bởi số thứ nguyên

julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
236 và loại phần tử
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
18. và là bí danh cho các trường hợp 1-d và 2-d. Các thao tác trên các đối tượng
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
49 được xác định bằng cách sử dụng các hàm và toán tử cấp cao hơn, theo cách độc lập với bộ lưu trữ bên dưới. Các hoạt động này thường hoạt động chính xác dưới dạng dự phòng cho bất kỳ triển khai mảng cụ thể nào

Loại

julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
49 bao gồm bất kỳ thứ gì giống như mảng một cách mơ hồ và việc triển khai nó có thể khá khác so với các mảng thông thường. Ví dụ: các phần tử có thể được tính toán theo yêu cầu thay vì được lưu trữ. Tuy nhiên, bất kỳ loại
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
360 cụ thể nào thường phải triển khai ít nhất [trả về một bộ dữ liệu
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
300] và ; . Chúng tôi khuyến nghị rằng các thao tác này có độ phức tạp về thời gian gần như không đổi, vì nếu không, một số hàm mảng có thể bị chậm bất ngờ. Các loại cụ thể cũng thường cung cấp một phương thức, được sử dụng để phân bổ một mảng tương tự cho và các hoạt động không đúng chỗ khác. Bất kể một
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
360 được biểu diễn bên trong như thế nào, thì
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
18 là loại đối tượng được trả về bằng cách lập chỉ mục số nguyên [
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
377, khi
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
8 không trống] và
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
236 phải là độ dài của bộ được trả về bởi. Để biết thêm chi tiết về việc xác định triển khai
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
49 tùy chỉnh, hãy xem phần

julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
382 là một kiểu con trừu tượng của
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
49 nhằm bao gồm tất cả các mảng trong đó các phần tử được lưu trữ liên tục theo thứ tự chính của cột [xem phần ]. Loại này là một phiên bản cụ thể của
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
382; . Rất ít hoạt động được triển khai cụ thể cho
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
52 ngoài những hoạt động được yêu cầu cho tất cả các
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
49;

julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
390 là một chuyên môn hóa của
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
49 thực hiện lập chỉ mục bằng cách chia sẻ bộ nhớ với mảng ban đầu thay vì sao chép nó. Một
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
390 được tạo bằng hàm, được gọi theo cách tương tự như [với một mảng và một loạt đối số chỉ mục]. Kết quả của trông giống như kết quả của , ngoại trừ dữ liệu được giữ nguyên. lưu trữ các vectơ chỉ mục đầu vào trong một đối tượng
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
390, sau này có thể được sử dụng để lập chỉ mục mảng ban đầu một cách gián tiếp. Bằng cách đặt macro trước một biểu thức hoặc khối mã, bất kỳ lát cắt
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
400 nào trong biểu thức đó sẽ được chuyển đổi để tạo một dạng xem
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
390 thay thế

s là các mảng boolean "được đóng gói" tiết kiệm không gian, lưu trữ một bit cho mỗi giá trị boolean. Chúng có thể được sử dụng tương tự như mảng

julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
403 [lưu trữ một byte cho mỗi giá trị boolean] và có thể được chuyển đổi sang/từ mảng sau thông qua
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
404 và
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
405, tương ứng

Một mảng được "strided" nếu nó được lưu trữ trong bộ nhớ với các khoảng cách được xác định rõ [sải] giữa các phần tử của nó. Một mảng có sải chân với loại phần tử được hỗ trợ có thể được chuyển đến thư viện bên ngoài [không phải Julia] như BLAS hoặc LAPACK bằng cách chuyển nó và sải chân cho mỗi thứ nguyên. Là khoảng cách giữa các phần tử dọc theo chiều

julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
298. Ví dụ: nội dung dựng sẵn
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
52 được trả về bởi
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
410 có các phần tử của nó được sắp xếp liền kề theo thứ tự chính của cột. Điều này có nghĩa là sải chân của thứ nguyên đầu tiên — khoảng cách giữa các phần tử trong cùng một cột — là
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
296

julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
44

Bước tiến của chiều thứ hai là khoảng cách giữa các phần tử trong cùng một hàng, bỏ qua số phần tử bằng với số phần tử trong một cột [

julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
412]. Tương tự, chuyển giữa hai "trang" [ở chiều thứ ba] yêu cầu bỏ qua các phần tử
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
413. Của mảng này là bộ của ba số này với nhau

julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
45

Trong trường hợp cụ thể này, số phần tử bị bỏ qua trong bộ nhớ khớp với số chỉ số tuyến tính bị bỏ qua. Đây chỉ là trường hợp đối với các mảng liền kề như

julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
52 [và các kiểu con
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
382 khác] và nói chung là không đúng. Các dạng xem có chỉ số phạm vi là một ví dụ điển hình về các mảng có cấu trúc không liền kề; . Chế độ xem này
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
418 đề cập đến cùng một bộ nhớ như
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
8 nhưng đang bỏ qua và sắp xếp lại một số thành phần của nó. Bước tiến của chiều đầu tiên của
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
418 là
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
421 vì chúng tôi chỉ chọn mỗi hàng thứ ba từ mảng ban đầu của chúng tôi

julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
46

Chế độ xem này đang chọn tương tự mọi cột khác từ

julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
8 ban đầu của chúng tôi — và do đó, nó cần bỏ qua phần tương đương của hai cột năm phần tử khi di chuyển giữa các chỉ mục trong chiều thứ hai

julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
47

Chiều thứ ba thú vị vì thứ tự của nó bị đảo ngược. Do đó, để chuyển từ "trang" đầu tiên sang trang thứ hai, nó phải quay ngược lại trong bộ nhớ và do đó, bước tiến của nó trong chiều này là âm

julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
48

Điều này có nghĩa là

julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
406 cho
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
418 thực sự đang trỏ vào giữa khối bộ nhớ của
julia> [zeros[Int, 2, 2] ; [3 4] ;; [1; 2] ; 5]
3×3 Matrix{Int64}:
 0  0  1
 0  0  2
 3  4  5

julia> [1:2; 4;; 1; 3:4]
3×2 Matrix{Int64}:
 1  1
 2  3
 4  4
8 và nó đề cập đến các phần tử cả ngược và xuôi trong bộ nhớ. Xem để biết thêm chi tiết về cách xác định các mảng có cấu trúc của riêng bạn. và là các bí danh thuận tiện cho nhiều loại mảng dựng sẵn được coi là mảng có bước, cho phép chúng gửi đi để chọn các triển khai chuyên biệt gọi các hàm BLAS và LAPACK được điều chỉnh và tối ưu hóa cao chỉ bằng cách sử dụng con trỏ và các bước

Điều đáng nhấn mạnh là các bước tiến là về sự bù đắp trong bộ nhớ hơn là lập chỉ mục. Nếu bạn đang muốn chuyển đổi giữa lập chỉ mục tuyến tính [chỉ mục đơn] và lập chỉ mục cartesian [đa chỉ mục], hãy xem và

Chủ Đề