Heim  >  Artikel  >  Backend-Entwicklung  >  Wie führe ich eine Numpy-Übertragung mithilfe eines dynamischen Arrays mit Python durch?

Wie führe ich eine Numpy-Übertragung mithilfe eines dynamischen Arrays mit Python durch?

PHPz
PHPznach vorne
2023-09-15 09:13:02829Durchsuche

Wie führe ich eine Numpy-Übertragung mithilfe eines dynamischen Arrays mit Python durch?

„Broadcasting“ bezieht sich darauf, wie NumPy Arrays unterschiedlicher Dimensionen während arithmetischer Operationen verarbeitet. Das kleinere Array wird innerhalb bestimmter Grenzen über das größere Array „broadcastet“, um sicherzustellen, dass ihre Formen konsistent sind. Broadcasting ermöglicht Ihnen die Vektorisierung Array-Operationen, sodass Sie eine Schleife in C anstelle von Python durchführen können

Dies wird ohne die Notwendigkeit unnötiger Datenkopien erreicht, was zu effizienten Algorithmusimplementierungen führt. In manchen Fällen ist Broadcasting eine negative Idee, da es zu einer verschwenderischen Speichernutzung führt, die die Berechnung verlangsamt.

In diesem Artikel zeigen wir Ihnen, wie Sie mit Python Broadcasting mit NumPy-Arrays durchführen.

在给定数组上执行广播的步骤-

  • Schritt 1. Erstellen Sie zwei Arrays mit kompatiblen Abmessungen

  • Schritt 2. Drucken Sie das angegebene Array aus

  • Schritt 3. Führen Sie eine arithmetische Operation mit den beiden Arrays durch

  • Schritt 4. Drucken Sie das Ergebnisarray aus

添加两个不同维度的数组

使用arange()函数创建一个由0到n-1的数字组成的numpy数组(arange()函数返回在给定区间内均匀间隔的值。在半开区间[start, stop]内生成值),并将某个常数值加到其中.

Beispiel

import numpy as np
# Getting list of numbers from 0 to 7
givenArray = np.arange(8)

# Adding a number to the numpy array 
result_array = givenArray + 9
print("The input array",givenArray)
print("Result array after adding 9 to the input array",result_array)

输出

The input array [0 1 2 3 4 5 6 7]
Result array after adding 9 to the input array [ 9 10 11 12 13 14 15 16] 

给定的数组有一个维度(轴),长度为8,而9是一个没有维度的简单整数.由于它们的维度不同,Numpy尝试沿着某个轴广播(只是拉伸)较小的数组,使其适用于数学运算.

将具有兼容维度的两个数组相加

Erstellen von zwei NumPy-Arrays von 0 bis n-1 mit der Funktion arange() und Umformen mit der Funktion reshape() (formt ein Array um, ohne seine Daten zu beeinflussen). Die beiden Arrays haben kompatible Dimensionen (3,4) und (3,1) und fügen die entsprechenden Elemente beider Arrays hinzu.

Beispiel

import numpy as np
# Getting the list of numbers from 0 to 11 and reshaping it to 3 rows and 4 columns
givenArray_1 = np.arange(12).reshape(3, 4)

# Printing the shape(rowsize, columnsize) of array
print("The shape of Array_1 = ", givenArray_1.shape)
 
# Getting list of numbers from 0 to 2 and reshaping it to 3 rows and 1 columns
givenArray_2 = np.arange(3).reshape(3, 1)
print("The shape of Array_2 = ", givenArray_2.shape)

# Summing both the arrays
print("Input array 1 \n",givenArray_1)
print("Input array 2 \n",givenArray_2)
print("Summing both the arrays:")
print(givenArray_1 + givenArray_2)

输出

The shape of Array_1 =  (3, 4)
The shape of Array_2 =  (3, 1)
Input array 1 
 [[ 0  1  2  3]
  [ 4  5  6  7]
  [ 8  9 10 11] ]
Input array 2 
 [[0]
  [1]
  [2]]
Summing both the arrays:
[[ 0  1  2  3]
 [ 5  6  7  8]
 [10 11 12 13]]

Das gegebene Array_2 wird entlang der zweiten Dimension erweitert, um der Dimension von gegebenem Array_1 zu entsprechen. Da die Abmessungen beider Arrays kompatibel sind, ist dies möglich.

将具有不兼容维度的两个数组求和

Erstellen von zwei NumPy-Arrays mit INKOMPATIBELEN Dimensionen (6, 4) und (6, 1). Wenn wir versuchen, die entsprechenden Elemente beider Arrays hinzuzufügen, wird ein FEHLER angezeigt, wie unten gezeigt.

Beispiel

import numpy as np
# Getting a list of numbers from 0 to 11 and reshaping it to 3 rows and 4 columns
givenArray_1 = np.arange(20).reshape(6, 4)

# Printing the shape(rowsize, columnsize) of array
print("The shape of Array_1 = ", givenArray_1.shape)
 
# Getting list of numbers from 0 to 5 and reshaping it to 3 rows and 1 columns
givenArray_2 = np.arange(6).reshape(6, 1)
print("The shape of Array_2 = ", givenArray_2.shape)

# Summing both the arrays
print("Summing both the arrays:")
print(givenArray_1 + givenArray_2)

输出

Traceback (most recent call last):
  File "main.py", line 3, in 
    givenArray_1 = np.arange(20).reshape(6, 4)
ValueError: cannot reshape array of size 20 into shape (6,4)

行数为6,列数为4。

Es kann nicht in eine Matrix der Größe 20 eingefügt werden (es ist eine Matrix der Größe 6*4 = 24 erforderlich).

Summieren von mehrdimensionalen Numpy-Arrays und linearen Arrays

Erstellen Sie ein mehrdimensionales Array mit der Funktion arange() und formen Sie es mit der Funktion reshape() in eine zufällige Anzahl von Zeilen und Spalten um. Erstellen Sie ein weiteres lineares Array mit der Funktion arange() und summieren Sie beide Arrays.

Beispiel 1

import numpy as np
# Getting list of numbers from 0 to 14 and reshaping it to 5 rows and 3 columns
givenArray_1 = np.arange(15).reshape(5, 3)

# Printing the shape(rowsize, columnsize) of array
print("The shape of Array_1 = ", givenArray_1.shape)
 
# Getting list of numbers from 0 to 2
givenArray_2 = np.arange(3)
print("The shape of Array_2 = ", givenArray_2.shape)

# Summing both the arrays
print("Array 1 \n",givenArray_1)
print("Array 2 \n",givenArray_2)
print("Summing both the arrays: \n",givenArray_1 + givenArray_2)

输出

The shape of Array_1 =  (5, 3)
The shape of Array_2 =  (3,)
Array 1 
 [[ 0  1  2]
  [ 3  4  5]
  [ 6  7  8]
  [ 9 10 11]
  [12 13 14]]
Array 2 
 [0 1 2]
Summing both the arrays: 
 [[ 0  2  4]
  [ 3  5  7]
  [ 6  8 10]
  [ 9 11 13]
  [12 14 16]]
 

给定的线性数组被扩展以匹配给定数组1(多维数组)的维度.由于两个数组的维度是兼容的,这是可能的.

Beispiel 2

import numpy as np
givenArray_1 = np.arange(240).reshape(6, 5, 4, 2)
print("The shape of Array_1: ", givenArray_1.shape)
 
givenArray_2 = np.arange(20).reshape(5, 4, 1)
print("The shape of Array_2: ", givenArray_2.shape)
 
# Summing both the arrays and printing the shape of it
print("Summing both the arrays and printing the shape of it:")
print((givenArray_1 + givenArray_2).shape)

输出

The shape of Array_1:  (6, 5, 4, 2)
The shape of Array_2:  (5, 4, 1)
Summing both the arrays and printing the shape of it:
(6, 5, 4, 2)

Es ist wichtig zu verstehen, dass mehrere Arrays über mehrere Dimensionen verteilt werden können. Array1 hat die Dimensionen (6, 5, 4, 2), während Array2 die Dimensionen (5, 4, 1) hat. Das Dimensionsarray wird gebildet, indem Array1 entlang der dritten Dimension und Array2 entlang der ersten und zweiten Dimension (6, 5, 4, 2) gestreckt wird.

结论

Numpy hat eine neue Version von Numpy entwickelt字添加到数组中的每个元素,而不是使用广播方法.这种方式之所以慢两个原因: Die Verwendung von Python und die Verwendung von C-Dateien.将步幅设置为0允许您无限循环遍历组件,而不会产生内存开销.

Das obige ist der detaillierte Inhalt vonWie führe ich eine Numpy-Übertragung mithilfe eines dynamischen Arrays mit Python durch?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:tutorialspoint.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen