📜  Numpy中的N维数组 ndarray(1)

📅  最后修改于: 2023-12-03 15:18:03.804000             🧑  作者: Mango

Numpy中的N维数组 ndarray

Numpy是Python中最常用的科学计算库之一。其中,ndarray(N-dimensional array的缩写)是Numpy中最重要的数据结构之一。Numpy中的ndarray可以理解为是一个n维的数组对象,它由两部分组成:实际的数据和描述数据在各个维度上的元数据(shape,dtype等等)。

创建ndarray数组

我们可以使用numpy.array()函数来创建一个ndarray数组,这个函数可以传入Python list、tuple等对象,它会将这个对象转换为ndarray类型。以下是一些创建ndarray数组的示例:

import numpy as np

# 从Python List创建
arr1 = np.array([1, 2, 3])
print(arr1)

# 从Python List嵌套的List创建
arr2 = np.array([[1, 2, 3], [4, 5, 6]])
print(arr2)

# 创建所有元素都为0的ndarray数组
arr3 = np.zeros((2, 3))
print(arr3)

# 创建所有元素都为1的ndarray数组
arr4 = np.ones((3, 2, 2))
print(arr4)

# 创建所有元素都为同一个数的ndarray数组
arr5 = np.full((2, 2), 7)
print(arr5)

# 创建一个单位矩阵
arr6 = np.eye(3)
print(arr6)

# 生成一个序列
arr7 = np.arange(10)
print(arr7)

# 生成一个指定区间内等间隔的数
arr8 = np.linspace(0, 1, 5)
print(arr8)

# 随机生成一个ndarray数组
arr9 = np.random.random((3, 3, 3))
print(arr9)
ndarray数组操作
索引和切片

我们可以使用类似于Python list的方式来访问ndarray数组中的元素,如以下示例:

import numpy as np

a = np.array([
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
])

# 显示第二行
print(a[1,:])

# 显示第二列
print(a[:,1])

# 显示左上角矩阵
print(a[:2,:2])

# 修改元素
a[0,0] = 10
print(a)
数组运算

与Python list不同,ndarray数组支持一些矢量运算。这意味着我们可以直接对整个数组进行操作,而无需显式地写循环。例如:

import numpy as np

a = np.array([[1, 2, 3], [4, 5, 6]])
b = np.array([[1, 2, 3], [1, 2, 3]])

# 逐元素加减乘除
print(a + b)
print(a - b)
print(a * b)
print(a / b)

# 逐元素求余数
print(a % 3)

# 平方、幂、指数
print(np.square(a))
print(np.power(a, 2))
print(np.exp(a))
print(np.log(a))

# 数组和
print(np.sum(a))

# 平均值
print(np.mean(a))

# 标准差和方差
print(np.std(a))
print(np.var(a))
数组广播

数组广播是一种强大的数组运算功能,它使得对不同形状的数组进行操作成为可能。在运算中,系统会自动地尝试将较小的数组进行扩展,使其形状与较大的数组相同。如以下示例:

import numpy as np

# 广播机制
a = np.array([[1, 2], [3, 4]])
b = np.array([10, 20])

print(a * b)

在上面的示例中,数组b的形状是(2, ),而数组a的形状是(2, 2)。在运算中,系统会自动地将b进行扩展,使其形状变为(2, 2)。

总结

Numpy中的ndarray是一种可用于表示n维数据的最主要的数据结构之一。它可以通过numpy.array()函数来创建,也可以通过数值运算对其进行操作。与Python的内置list不同,ndarray支持矢量运算和数组广播等高级功能,这些特点使得它成为科学计算中不可缺少的工具之一。