Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Erläuterung des Vergleichs zwischen Listen- und NumPy.ndarry-Slicing in Python

Detaillierte Erläuterung des Vergleichs zwischen Listen- und NumPy.ndarry-Slicing in Python

黄舟
黄舟Original
2017-07-24 15:23:232873Durchsuche

In diesem Artikel werden hauptsächlich relevante Informationen vorgestellt, die den Unterschied zwischen Python-Listen- und NumPy.ndarry-Listen-Slicing nicht die Originaldaten zurückgeben, und Änderungen an den neuen Daten haben keine Auswirkungen auf die Originaldaten, während NumPy.ndarry Beim Slicing ist dies nicht der Fall. Freunde, die die Originaldaten zurückgeben müssen, finden unter

eine detaillierte Erklärung des Unterschieds zwischen Python-Listen- und NumPy.ndarry-Slices

Beispielcode :


# list 切片返回的是不原数据,对新数据的修改不会影响原数据
In [45]: list1 = [1, 2, 3, 4, 5] 

In [46]: list2 = list1[:3]

In [47]: list2
Out[47]: [1, 2, 3]

In [49]: list2[1] = 1999

# 原数据没变
In [50]: list1
Out[50]: [1, 2, 3, 4, 5]

In [51]: list2
Out[51]: [1, 1999, 3]



# 而 NumPy.ndarry 的切片返回的是原数据
In [52]: arr = np.array([1, 2, 3, 4, 5])

In [53]: arr
Out[53]: array([1, 2, 3, 4, 5])

In [54]: arr1 = arr[:3]

In [55]: arr1
Out[55]: array([1, 2, 3])

In [56]: arr1[0] = 989

In [57]: arr1
Out[57]: array([989,  2,  3])

# 修改了原数据
In [58]: arr
Out[58]: array([989,  2,  3,  4,  5])

# 若希望得到原数据的副本, 可以用 copy()
In [59]: arr2 = arr[:3].copy()

In [60]: arr2
Out[60]: array([989,  2,  3])

In [61]: arr2[1] = 99282

In [62]: arr2
Out[62]: array([ 989, 99282,   3])

# 原数据没被修改
In [63]: arr
Out[63]: array([989,  2,  3,  4,  5])

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung des Vergleichs zwischen Listen- und NumPy.ndarry-Slicing in Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn