English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

دليل أساسي في Python

تحكم في العملية في Python

الوظائف في Python

أنواع البيانات في Python

عمليات ملفات في Python

أهداف وشرائح في Python

تواريخ ووقت في Python

معرفة متقدمة في Python

دليل Python

ماتريكس وعدد الفئران بايثون

في هذا المقال، سنتعلم كيفية استخدام القوائم المدمجة ومكتبة NumPy لإنشاء مخططات في Python.

المخطط هو هيكل بيانات ثنائي الأبعاد حيث تقع الأرقام وفقًا للسطور والعمود.

هذا المخطط هو مخطط 3x4 ("ثلاثة ضرب أربعة") لأن لديه 3 سطر و4 عمود.

مخطط Python

ليس لدى Python نوع مخطط مدمج. ولكن يمكننا اعتبار قائمة القوائم كمخطط. على سبيل المثال:

A = [[1, 4, 5], 
    [-5, 8, 9]]

يمكننا اعتبار هذه القائمة من القوائم كمخطط بقياس 2x3.

قبل أن نكمل هذا المقال، من الضروري أن تفهمقائمة Python

لنلقي نظرة على كيفية استخدام القوائم المدمجة.

A = [[1, 4, 5, 12], 
    [-5, 8, 9, 0],
    [-6, 7, 11, 19]]
print("A =", A) 
print("A[1] =", A[1])     # السطر الثاني
print("A[1][2] =", A[1][2])   # العنصر الثالث في السطر الثاني
print("A[0][-1] =", A[0][-1])   # العنصر الأخير في السطر الأول
عمود = [];        # قائمة فارغة
للمحصول على row في A:
  عمود.إضافة(row[2])   
print("العمود الثالث =", عمود)

当我们运行程序时,输出将是:

A = [[1, 4, 5, 12], [-5, 8, 9, 0], [-6, 7, 11, 19]]
A[1] = [-5, 8, 9, 0]
A[1][2] = 9
A[0][-1] = 12
العمود الثالث = [5, 9, 11]

إليك بعض الأمثلة على استخدام المخططات في Python باستخدام القوائم المدمجة.

يمكن استخدام القوائم المدمجة كمخططات لتنفيذ مهام حسابية بسيطة، ولكن يمكنNumPyاستخدام Python هو أفضل طريقة لمعالجة المخططات.

نمط NumPy

NumPy是用于科学计算的软件包,它支持强大的N维数组对象。在使用NumPy之前,您需要先安装它。有关更多信息,

一旦安装了NumPy,就可以导入和使用它。

NumPy提供数字的多维数组(实际上是一个对象)。让我们举个实例:

import numpy as np
a = np.array([1, 2, 3])
print(a)               # 输出: [1, 2, 3]
print(type(a))         # 输出: 

正如您看到的,NumPy的数组类称为ndarray。

如何创建一个NumPy数组?

有几种创建NumPy数组的方法。

1.整数,浮点数和复数的数组

import numpy as np
A = np.array([[1, 2, 3], [3, 4, 5]])
print(A)
A = np.array([[1.1, 2, 3], [3, 4, 5]]) # 浮点数组
print(A)
A = np.array([[1, 2, 3], [3, 4, 5]], dtype = complex) # 复数数组
print(A)

运行该程序时,输出为:

[[1 2 3]
 [3 4 5]]
[[1.1 2.  3. ]
 [3.  4.  5. ]]
[[1.+0.j 2.+0.j 3.+0.j]
 [3.+0.j 4.+0.j 5.+0.j]]

2.零和一的数组

import numpy as np
zeors_array = np.zeros( (2, 3) )
print(zeors_array)
'''
 Output:
 [[0. 0. 0.]
  [0. 0. 0.]]
'''
ones_array = np.ones( (1, 5), dtype=np.int32 ) // dtype
print(ones_array)      # 输出: [[1 1 1 1 1]]

في هذا السياق، نحن نحدد dtype 32 بت (4 بايت). لذلك، يمكن لل陣列 استخدام القيم من إلى。-2-312-31-1

3.استخدام arange() و shape()

import numpy as np
A = np.arange(4)
print('A =', A)
B = np.arange(12).reshape(2, 6)
print('B =', B)
''' 
Output:
A = [0 1 2 3]
B = [[ 0  1  2  3  4  5]
 [ 6  7  8  9 10 11]
'''

了解有关创建NumPy数组的其他方法的更多信息。

矩阵运算

上面,我们为您提供了3个示例:两个矩阵相加,两个矩阵相乘以及一个矩阵转置。在编写这些程序之前,我们使用了嵌套列表。让我们看看如何使用NumPy数组完成相同的任务。

两种矩阵的加法

我们使用+运算符将两个NumPy矩阵的对应元素相加。

import numpy as np
A = np.array([[2, 4], [5, -6]])
B = np.array([[9, -3], [3, 6]])
C = A + B # 元素聪明的加法
print(C)
''' 
Output:
[[11  1]
 [ 8  0]
 '''

两个矩阵相乘

为了将两个矩阵相乘,我们使用dot()方法。了解有关numpy.dot如何工作的更多信息。

注意: *用于数组乘法(两个数组的对应元素的乘法),而不是矩阵乘法。

import numpy as np
A = np.array([[3, 6, 7], [5, -3, 0]])
B = np.array([[1, 1], [2, 1], [3, -3]])
C = A.dot(B)
print(C)
''' 
Output:
[[ 36 -12]
 [ -1  2]
'''

矩阵转置

我们使用numpy.transpose计算矩阵的转置。

import numpy as np
A = np.array([[1, 1], [2, 1], [3, -3]])
print(A.transpose())
''' 
Output:
[[ 1  2  3]
 [ 1  1 -3]
'''

正如您看到的,NumPy使我们的任务更加轻松。

访问矩阵元素,行和列

访问矩阵元素

与列表类似,我们可以使用索引访问矩阵元素。让我们从一维NumPy数组开始。

import numpy as np
A = np.array([2, 4, 6, 8, 10])
print("A[0] =", A[0]) # First element     
print("A[2] =", A[2]) # Third element 
print("A[-1] =", A[-1]) # Last element

运行该程序时,输出为:

A[0] = 2
A[2] = 6
A[-1] = 10

现在,让我们看看如何访问二维数组(基本上是矩阵)的元素。

import numpy as np
A = np.array([[1, 4, 5, 12],
    [-5, 8, 9, 0],
    [-6, 7, 11, 19]])
#  First element of first row
print("A[0][0] =", A[0][0])  
# Third element of second row
print("A[1][2] =", A[1][2])
# Last element of last row
print("A[-1][-1] =", A[-1][-1])

当我们运行程序时,输出将是:

A[0][0] = 1
A[1][2] = 9
A[-1][-1] = 19

访问矩阵的行

import numpy as np
A = np.array([[1, 4, 5, 12], 
    [-5, 8, 9, 0],
    [-6, 7, 11, 19]])
print("A[0] =", A[0]) # First Row
print("A[2] =", A[2]) # Third Row
print("A[-1] =", A[-1]) # Last Row (3rd row in this case)

当我们运行程序时,输出将是:

A[0] = [1, 4, 5, 12]
A[2] = [-6, 7, 11, 19]
A[-1] = [-6, 7, 11, 19]

访问矩阵的列

import numpy as np
A = np.array([[1, 4, 5, 12], 
    [-5, 8, 9, 0],
    [-6, 7, 11, 19]])
print("A[:,0] =",A[:,0]) # First Column
print("A[:,3] =", A[:,3]) # Fourth Column
print("A[:,-1] =", A[:,-1]) # Last Column (4th column in this case)

当我们运行程序时,输出将是:

A[:,0] = [ 1 -5 -6]
A[:,3] = [12  0 19]
A[:,-1] = [12  0 19]

如果您不知道上面的代码如何工作,请阅读本文矩阵部分的切片。

矩阵切片

一维NumPy数组的切片类似于列表。如果您不知道列表切片的工作原理,请访问了解Python的切片符号

让我们举个实例:

import numpy as np
letters = np.array([1, 3, 5, 7, 9, 7, 5])
# 3rd to 5th elements
print(letters[2:5])        # 输出: [5, 7, 9]
# من الاول إلى الرابع
print(letters[:-5])  # مخرجات:[1, 3]   
# من السادس إلى الاخير
print(letters[5:])  # مخرجات:[7, 5]
# من الاول إلى الاخير
print(letters[:])  # مخرجات:[1, 3, 5, 7, 9, 7, 5]
# عكس قائمة
print(letters[::-1])  # مخرجات:[5, 7, 9, 7, 5, 3, 1]

الآن، دعونا نرى كيف يمكننا قص الماتريكس.

import numpy as np
A = np.array([[1, 4, 5, 12, 14], 
    [-5, 8, 9, 0, 17],
    [-6, 7, 11, 19, 21]])
print(A[:2, :4])  # صفين، أربعة أعمدة
''' Output:
[[ 1 4 5 12]]
 [-5 8 9 0]
'''
print(A[:1,])  # الصف الأول، جميع الأعمدة
''' Output:
[[ 1 4 5 12 14]]
'''
print(A[:, 2])  # جميع الصفوف، العمود الثاني
''' Output:
[ 5 9 11]
'''
print(A[:, 2:5])  # جميع الصفوف، من العمود الثالث إلى الخامس
'''Output:
[[ 5 12 14]
 [ 9 0 17]
 [11 19 21]]
'''

كما ترون، يمكن معالجة الماتريكس بشكل أسهل باستخدام NumPy (بدلاً من القوائم المدمجة) دون أن نلمس الأساسيات. نوصي بدراسة مكتبة NumPy بشكل دقيق، خاصة عند استخدام بايثون في علوم البيانات/التحليل.

موارد NumPy، قد تجدونها مفيدة: