使用Numpy内部功能函数
Numpy具有用于创建数组的内置函数。以下是一些例子。
创建一个一维的数组
首先,让我们创建一维数组。arange是一种广泛使用的函数,用于快速创建数组。将值20传递给arange函数会创建一个值范围为0到19的数组。
import Numpy as nparray = np.arange(20)array
输出:
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19])
要验证此数组的维度,请使用shape属性。
array.shape
输出:
(20,)
由于逗号后面没有值,因此这是一维数组。 要访问此数组中的值,请指定非负索引。 与其他编程语言一样,索引从零开始。 因此,要访问数组中的第四个元素,请使用索引3。
array[3]
输出:
3
Numpy的数组是可变的,这意味着你可以在初始化数组后更改数组中元素的值。 使用print函数查看数组的内容。
array[3] = 100print(array)
输出:
[ 0 1 2 100 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19]
与Python列表不同,Numpy数组的内容是同质的。 因此,如果你尝试将字符串值分配给数组中的元素,其数据类型为int,则会出现错误。
array[3] ='Numpy'
输出:
ValueError: invalid literal for int() with base 10: 'Numpy'
创建一个二维数组
如果只使用arange函数,它将输出一维数组。 要使其成为二维数组,请使用reshape函数将其输出。
array = np.arange(20).reshape(4,5)array
输出:
array([[ 0, 1, 2, 3, 4], [ 5, 6, 7, 8, 9], [10, 11, 12, 13, 14], [15, 16, 17, 18, 19]])
首先,将创建20个整数,然后将数组转换为具有4行和5列的二维数组。 我们来检查一下这个数组的维数。
(4, 5)
由于我们得到两个值,这是一个二维数组。 要访问二维数组中的元素,需要为行和列指定索引。
array[3][4]
输出:
19
创建三维数组及更多维度
要创建三维数组,请为重塑形状函数指定3个参数。
array = np.arange(27).reshape(3,3,3)array
输出:
array([[[ 0, 1, 2], [ 3, 4, 5], [ 6, 7, 8]], [[ 9, 10, 11], [12, 13, 14], [15, 16, 17]], [[18, 19, 20], [21, 22, 23], [24, 25, 26]]])
需要注意的是:数组中元素的数量(27)必须是其尺寸(3 * 3 * 3)的乘积。 要交叉检查它是否是三维数组,可以使用shape属性。
array.shape
输出:
(3, 3, 3)
此外,使用arange函数,你可以创建一个在定义的起始值和结束值之间具有特定序列的数组。
np.arange(10, 35, 3)
输出:
array([10, 13, 16, 19, 22, 25, 28, 31, 34])
使用其他Numpy函数创建数组
除了arange函数之外,你还可以使用其他有用的函数(如 zeros 和 ones)来快速创建和填充数组。
使用zeros函数创建一个填充零的数组。函数的参数表示行数和列数(或其维数)。
np.zeros((2,4))
输出:
array([[0., 0., 0., 0.], [0., 0., 0., 0.]])
使用ones函数创建一个填充了1的数组。
np.ones((3,4))
输出:
array([[1., 1., 1., 1.], [1., 1., 1., 1.], [1., 1., 1., 1.]])
empty函数创建一个数组。它的初始内容是随机的,取决于内存的状态。
np.empty((2,3))
输出:
array([[0.65670626, 0.52097334, 0.99831087], [0.07280136, 0.4416958 , 0.06185705]])
full函数创建一个填充给定值的n * n数组。
np.full((2,2), 3)
输出:
array([[3, 3], [3, 3]])
eye函数可以创建一个n * n矩阵,对角线为1s,其他为0。
np.eye(3,3)
输出:
array([[1., 0., 0.], [0., 1., 0.], [0., 0., 1.]])
函数linspace在指定的时间间隔内返回均匀间隔的数字。 例如,下面的函数返回0到10之间的四个等间距数字。
np.linspace(0, 10, num=4)
输出:
array([ 0., 3.33333333, 6.66666667, 10.])
从Python列表转换成NumPy数组
除了使用Numpy函数之外,你还可以直接从Python列表创建数组。将Python列表传递给数组函数以创建Numpy数组:
array = np.array([4,5,6])array
输出:
array([4, 5, 6])
你还可以创建Python列表并传递其变量名以创建Numpy数组。
list = [4,5,6]list
输出:
[4, 5, 6]array = np.array(list)array
输出:
array([4, 5, 6])
你可以确认变量array和list分别是Python列表和Numpy数组。
type(list)
list
type(array)
Numpy.ndarray
要创建二维数组,请将一系列列表传递给数组函数。
array = np.array([(1,2,3), (4,5,6)])array
输出:
array([[1, 2, 3], [4, 5, 6]])array.shape
输出:
(2, 3)