Computer >> Máy Tính >  >> Lập trình >> Ruby

Ma trận là gì và làm thế nào để sử dụng nó trong Ruby?

Ma trận là một mảng 2D (2 chiều) có thể được sử dụng để lưu trữ và làm việc với dữ liệu giống bảng tính.

Chúng có thể được sử dụng cho :

  • Biểu diễn bàn cờ trong trò chơi trên bàn (cờ vua, cờ caro, v.v.)
  • Thống kê &phân tích dữ liệu
  • Tạo các âm mưu &đồ thị

Vì đây là một cấu trúc dữ liệu mạnh mẽ nên rất hữu ích nếu bạn học cách sử dụng nó.

Cách tạo ma trận trong Ruby

Bạn có thể tạo ma trận với các mảng.

Như thế này :

matrix = [
  [1,2,3],
  [4,5,6],
  [7,8,9]
]

Điều này tạo ra ma trận 3 × 3 và đó là lựa chọn tốt nhất của bạn nếu bạn muốn lưu trữ dữ liệu 2 chiều dưới dạng bảng hoặc tập hợp các vị trí.

Nhưng nếu bạn muốn kết hợp các ma trận thông qua cộng, trừ và nhân…

Sau đó, bạn có thể sử dụng Matrix lớp học.

Đây là cách sử dụng nó :

require 'matrix'

a = Matrix[[1,2,3], [4,5,6], [7,8,9]]
b = Matrix[[1,2,3], [4,5,6], [7,8,9]]

Bây giờ bạn có thể thêm chúng :

a + b
# Matrix[[2, 4, 6], [8, 10, 12], [14, 16, 18]]

Bạn có thể truy cập các giá trị riêng lẻ như sau:

a[0, 1]

Điều này khác với phiên bản mảng , sẽ sử dụng cú pháp này:

matrix[0][1]

Cả mảng &ma trận đều có thể được hoán vị, điều đó có nghĩa là các hàng trở thành cột &cột trở thành hàng.

Ví dụ :

matrix.transpose

# [[1, 4, 7], [2, 5, 8], [3, 6, 9]]

Cũng nên nhớ :

Các đối tượng ma trận là bất biến, vì vậy bạn không thể thay đổi các giá trị mà không tạo ma trận mới. Matrix này chủ yếu dành cho các phép toán, nếu bạn muốn phân tích và thống kê dữ liệu, bạn sẽ cần một thứ gì đó mạnh mẽ hơn.

Một cái gì đó giống như…

Đá quý Daru

Daru là một viên ngọc quý cho phép bạn làm việc với các ma trận, lấy số liệu thống kê từ chúng và in chúng dưới dạng một bảng được định dạng độc đáo. Daru cũng tích hợp với các viên ngọc vẽ đồ thị của Ruby để bạn có thể tạo các đồ thị &đồ thị từ dữ liệu của mình.

Đây là một ví dụ :

require 'daru'

df = Daru::DataFrame.new(
    {
      "A" => [1,2,3],
      "B" => [4,5,6],
      "C" => [7,8,9]
    },
     index: ["A", "B", "C"]
   )

Điều này in ra bảng sau :

    A   B   C
A   1   4   7
B   2   5   8
C   3   6   9

Bạn có thể truy cập một cột cụ thể như sau:

df['A']

Hoặc theo chỉ số số:

df[0]

Và bạn có thể nhận được số liệu thống kê như thế này :

df['B'].describe

#         statistics
# count            3
# mean           5.0
# std            1.0
# min              4
# max              6

Phần tốt nhất?

Bạn có thể tải dữ liệu trực tiếp từ tệp CSV, ActiveRecord và thậm chí cả tệp Excel.

Ví dụ :

df = Daru::DataFrame.from_csv('healthy_food.csv')

Và bạn có thể lọc dữ liệu bằng where biểu thức.

Ví dụ…

Nếu chúng ta có cột "carbs", chúng ta có thể tìm thấy tất cả các hàng trong ma trận của chúng ta có giá trị nhỏ hơn 25.

Như thế này :

df.where(df['carbs'].lt(25))

Bạn cũng có thể sort , group_by &aggregate khung dữ liệu của bạn.

Ví dụ :

df = Daru::DataFrame.new(
    {  str: %w(a b c d a),
       num: [52,12,7,17,1] }
    )

df.group_by(:str).aggregate(num: :sum)

#    num
# a   53
# b   12
# c    7
# d   17

Lập mưu với Daru

Daru cho phép bạn tạo các bản trình bày trực quan về dữ liệu của mình và xuất chúng dưới dạng tệp HTML.

Đây là một ví dụ :

df = Daru::DataFrame.new(
  {'Cat Names' => %w(Kitty Leo Felix),
    'Weight'   => [2,3,5]}
  )

df.plot(type: :bar, x: 'Cat Names', y: 'Weight') do |plot, _|
  plot.x_label 'Cat Name'
  plot.y_label 'Weight'

  plot.yrange [0, 5]
end
.export_html

Điều này tạo ra biểu đồ sau:

Ma trận là gì và làm thế nào để sử dụng nó trong Ruby?

Bạn sẽ thấy biểu đồ này dưới dạng tệp HTML trong cùng thư mục với mã của bạn.

Nếu bạn muốn sử dụng Daru trong ứng dụng Rails của mình, bạn cần thêm daru-view đá quý để kết hợp hoặc sử dụng một viên đá quý khác như chartkick.

Tóm tắt

Bạn đã học về ma trận trong Ruby để có thể làm việc với dữ liệu 2 chiều!

Đừng quên chia sẻ bài viết này để nhiều người có thể tìm thấy nó.

Cảm ơn vì đã đọc.