Numpy入门

虽然python自己有列表和数组,但是与numpy相比更消耗资源。numpy是python进行数值计算时最重要的基础包之一

创建数组
import numpy as np

a = np.arange(5)  # 一维数组
b = np.array([np.arange(6), np.arange(6)])  # 二维数组

x = [y for y in range(6)]
c = np.array([x] * 4)  # 二维数组4*6

c:--------------
[[0 1 2 3 4 5]
 [0 1 2 3 4 5]
 [0 1 2 3 4 5]
 [0 1 2 3 4 5]]

索引

基本上和list一模一样

遍历:

for element in b.flat: # 将b展成一维数组后遍历并打印
    print(element)

for i in range(len(b)):  # 根据索引遍历b中的元素并打印
    for j in range(len(b[0])):
        print(b[i][j])

切片索引:左闭右开

找出二维数组a中第m个数组的前n个元素    a[m, :n]


基本运算

向量和向量:

import numpy as np

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

运算

加法np.add(a,b)  或  a+b

对应位进行运算

print(a + b)
-----------
[[5 7 9]
 [5 7 9]]

减法np.subtract(a,b)  或  a-b
乘法(X乘)np.multiply(a,b) 或 a * b
除法     np.divide(a,b) 或 a/b
乘法(点乘,内积)np.dot(a,b)对应位相乘再相加

import numpy as np

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

print(np.dot(a, b))
-----------
[32 77]

向量和标量:

有数组a,运算有加减乘除取余( + - * / %)都是所有位同时进行运算

a.T,矩阵转置

矩阵的逆,参考
矩阵可逆的充要条件是矩阵满秩

import numpy as np

a = np.array([[1, 2], [3, 4]])  # 初始化一个非奇异矩阵(数组)
print(np.linalg.inv(a))  # 对应于MATLAB中 inv() 函数

# 矩阵对象可以通过 .I 更方便的求逆
A = np.matrix(a)
print(A.I)

通用函数 ufunc

NumPy 中包含了对数组进行处理的通用函数。以 ndarray 数组对象作为运算的基本元素

一个参数的叫一元函数,两个参数的叫二元函数

import numpy as np

A = np.random.randint(0, 10, (5, 6))  # 随机初始化一个5行6列的整数矩阵A

# 对矩阵A开平方
np.sqrt(A)  

# 将数组 A 的平方根乘浮点数分解成整数和小数部分
# B 是小数部分
B, C = np.modf(np.sqrt(A))

np.square() 平方;np.abs() 绝对值

更多可参考:Numpy通用函数-优快云博客


改变numpy数组的形状
  • 改变形状:reshape()、ravel()、flatten()、transpose()
  • 数组堆叠:hstack(),vstack(),dstack()

改变形状:

reshape()

import numpy as np

b = np.arange(24).reshape(2,3,4) # 2个3*4的数组
print(b)

ravel(),拆解,将多维数组用一维数组展示出来
flatten(),拉直,将多维数组变成一维数组(新开辟空间)
transpose(),转置  b.transpose()
shape,使用元组的方式改变形状

import numpy as np

b = np.arange(24)
b.shape = (6, 4)
print(b)

数组堆叠:

就是两个数组叠在一起,要注意的是使用时是两层括号

hstack() 水平叠加
vstack() 垂直叠加
前面这两个很容易理解
dstack() 深度叠加,就是在深度上叠加(参考

import numpy as np

a = np.arange(9).reshape(3, 3)
b = a * 2
c = np.hstack((a, b)) # 水平叠加
print(c)
---------------------
[[ 0  1  2  0  2  4]
 [ 3  4  5  6  8 10]
 [ 6  7  8 12 14 16]]

### NumPy 基础入门 #### 导入 NumPy 包 为了使用 NumPy 的功能,首先需要导入该库。通常情况下,会将其重命名为 `np` 以便于后续调用。 ```python import numpy as np ``` 这使得可以在整个程序中通过前缀 `np.` 来访问 NumPy 提供的各种函数和对象[^1]。 #### 创建 NumPy 数组 NumPy 中最基本的数据结构是 ndarray (n-dimensional array),即多维数组。可以通过多种方式来创建这些数组: - **从 Python 列表转换** 可以直接利用现有的列表数据构建 NumPy 数组 ```python list_data = [1, 2, 3] np_array = np.array(list_data) ``` - **内置函数生成** 使用特定模式自动生成数值序列或特殊矩阵 ```python # arange 函数用于生成等差数列并自动形成一维数组 sequence = np.arange(0, 10, 2) # 起始值为0,结束值小于10,步长为2 print(sequence) # reshape 方法可以改变现有数组的形状而不修改其内容 reshaped_sequence = sequence.reshape((2, -1)) print(reshaped_sequence) ``` 上述例子展示了如何创建一个简单的二维数组,并对其进行重塑操作[^2]。 #### 多维数组的操作 对于更复杂的场景,比如处理图像或其他形式的网格化数据时,可能需要用到更高维度的数组。下面的例子演示了基于条件筛选子集的方法: ```python x = np.arange(16).reshape((4, -1)) filtered_x = x[x[:, 3] % 3 == 0] print(filtered_x) ``` 这里先创建了一个四行四列的整型数组,接着根据第三列元素能否被三整除作为过滤条件获取符合条件的行向量集合[^3]。 #### 文件存取支持 除了内存中的计算外,有时还需要将 ndarrays 存储至磁盘或者加载已有的二进制文件。为此,提供了简便易用的 I/O 接口: ```python # 将数组保存成 .npy 格式的文件 file_path = 'example.npy' data_to_save = np.random.rand(5, 5) np.save(file=file_path, arr=data_to_save) # 加载之前保存过的 .npy 文件回到内存中 loaded_data = np.load(file_path) print(loaded_data) ``` 此过程不仅简化了持久化的流程,而且保持了原始数据类型的完整性[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值