python 中的 ndarray 和列表​​有什么区别?

what the differences between ndarray and list in python?

上周,我的老师问我们:在存储从一到一百的整数时,使用list和使用ndarray[=17=有什么区别? ].我以前从来没有用过numpy,所以我在网站上搜索了这个问题。 但是我所有的搜索结果都告诉我,它们只是尺寸不同。 Ndarray可以存储N维数据,而list存储一个。那不能让我满意。真的很简单,只是我想多了,还是没有找到合适的关键词去搜索? 我需要帮助。

有几点不同:

-您可以将元素附加到列表中,但您不能在不制作完整副本的情况下更改“numpy.ndarray”的大小。

-列表可以包含所有内容,在 numpy 数组中,所有元素必须具有相同的类型。

-在实践中,numpy 数组对于矢量函数比将函数映射到列表更快。

-我认为修改时间不是问题,但对元素的迭代才是问题。 Numpy 数组有许多与数组相关的方法('argmin'、'min'、'sort' 等)。

当我需要进行一些数学运算(求和、求平均值、数组乘法等)时,我更喜欢使用 numpy 数组;当我需要在 'items'(字符串、文件等)中进行迭代时,我更喜欢使用 list。

一个一维数组就像一个行方格纸.##

每个盒子里可以放一件东西

下图是一个二维数组的例子

二维数组有行有列

我应该改变数字。
我画图的时候把第一行复制了很多次
每行的数字可以完全不同。

import numpy as np

lol = [[1, 2, 3], [4, 5, 6]]
# `lol` is a list of lists

arr_har = np.array(lol, np.int32)

print(type(arr_har)) # <class 'numpy.ndarray'>

print("BEFORE:")
print(arr_har)

# change the value in row 0 and column 2.
arr_har[0][2] = 999

print("\n\nAFTER arr_har[0][2] = 999:")
print(arr_har)

下图是一个3维数组的例子

Summary/Conclusion:

Python中的list就像一个一维数组。

ndarray是“n维数组”或“多维数组”的缩写

Python listndarray 的区别在于 ndarray 有 2 个或更多维度