python 之 numpy 库

关于数组的操作

NumPy 提供了丰富的功能和函数用于对数组进行各种操作。以下是一些常用的 NumPy 数组操作:

创建数组:

  1. 创建数组:
    • 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'>



  • 数组在形式上就是列表,但是元素之间是没有逗号隔开的
  1. 生成特定形状的数组:
    • 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)

线性代数操作:

  1. 矩阵运算:
    • 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)
      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值