文章目录
关于数组的操作
NumPy 提供了丰富的功能和函数用于对数组进行各种操作。以下是一些常用的 NumPy 数组操作:
创建数组:
- 创建数组:
np.array()
: 从Python列表或元组创建数组。arr = np.array([1, 2, 3]) # 输出 [1 2 3]
区别数组,元组,列表
import numpy as np
a = [1,2,3]
b= np.array(a)
print(a,b)
print(type(a),type(b))
a = (1,2,3)
b= np.array(a)
print(a,b)
print(type(a),type(b))
# 输出
#[1, 2, 3] [1 2 3]
#<class 'list'> <class 'numpy.ndarray'>
#(1, 2, 3) [1 2 3]
#<class 'tuple'> <class 'numpy.ndarray'>
- 数组在形式上就是列表,但是元素之间是没有逗号隔开的
- 生成特定形状的数组:
np.zeros()
,np.ones()
: 创建全零或全一数组。zeros_arr = np.zeros((3, 3)) ones_arr = np.ones((3, 3))
- 输出
- 对于要创建几维数组,就先使用np.zeros() 和 np.ones() 来指定,然后再对相对应的位置进行操作即可
np.arange()
,np.linspace()
: 生成等差数列或等间隔数列。np.arange()
指定的范围没有包括右边界,np.linspace()
是在两个边界里面等分,划分成几个部分
import numpy as np
a = np.arange(0,10,2)
print(a)
b = np.linspace(0, 1, 5)
print(b)
- 输出
[0 2 4 6 8]
[0. 0.25 0.5 0.75 1. ]
np.eye()
: 创建单位矩阵。eye_arr = np.eye(3) # 输出 [[1. 0. 0.] [0. 1. 0.] [0. 0. 1.]]
- 单位矩阵只用指定行数即可(行数等于列数)
数组操作:
形状操作:
-
arr.shape
: 获取数组的形状。返回一个表示维度的元组
-
arr.reshape()
: 改变数组的形状。arr_reshaped = arr.reshape((3, 1))
-
np.concatenate()
: 沿指定轴连接数组。concatenated_arr = np.concatenate((arr1, arr2), axis=0)
import numpy as np
a = np.arange(0, 10, 2)
print(a)
print(a.shape)
a = np.zeros((3,4))
print(a)
print(a.shape)
# 输出
[0 2 4 6 8]
(5,)
[[0. 0. 0. 0.]
[0. 0. 0. 0.]
[0. 0. 0. 0.]]
(3, 4)
索引和切片:
- 使用中括号
[]
进行索引和切片操作。
在NumPy中,二维数组(矩阵)的切片和相关操作提供了丰富的功能,可以方便地选择、操作和处理数组的子集。以下是一些常见的二维NumPy数组切片和相关操作:
在NumPy中,二维数组(矩阵)的切片和相关操作提供了丰富的功能,可以方便地选择、操作和处理数组的子集。以下是一些常见的二维NumPy数组切片和相关操作:
1. 创建二维数组:
import numpy as np
# 创建一个3x3的二维数组
my_array = np.array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
2. 切片操作:
- 切片是用中括号
[]
,对于索引是从0开始的,[start,end) 是不包含右边界的,对于多维数组的想要某一行某一列,就直接用:
来代替,对于不同维度的就用,
隔开
获取行和列:
# 获取第一行
first_row = my_array[0, :] # 结果为 array([1, 2, 3])
# 获取第二列
second_column = my_array[:, 1] # 结果为 array([2, 5, 8])
获取子矩阵:
# 获取子矩阵(2x2,左上角)
sub_matrix = my_array[:2, :2]
# 结果为 array([[1, 2],
# [4, 5]])
3. 修改数组元素:
# 修改第二行的所有元素为10
my_array[1, :] = 10
# 修改第一列的所有元素为20
my_array[:, 0] = 20
4. 条件切片:
# 获取满足条件的元素的索引
condition = my_array > 5
indices = np.where(condition)
# 获取满足条件的元素
filtered_values = my_array[condition]
5. 数组拼接和分裂:
水平拼接:
# 创建另一个3x3的数组
another_array = np.array([[11, 12, 13],
[14, 15, 16],
[17, 18, 19]])
# 水平拼接两个数组
result = np.hstack((my_array, another_array))
垂直拼接:
# 垂直拼接两个数组
result = np.vstack((my_array, another_array))
水平分裂:
# 水平分裂数组,将数组分为两部分
split_result = np.hsplit(my_array, 3)
垂直分裂:
# 垂直分裂数组,将数组分为两部分
split_result = np.vsplit(my_array, 3)
线性代数操作:
- 矩阵运算:
-
np.dot()
,np.matmul()
: 执行矩阵乘法。matrix_product = np.dot(matrix1, matrix2)
-
np.transpose()
: 转置矩阵。transposed_matrix = np.transpose(matrix)
-
np.linalg.inv()
: 计算矩阵的逆。inverse_matrix = np.linalg.inv(matrix)
-