python数组基本使用

使用Numpy进行数组运算

相比 List,NumPy 数组的优势
NumPy 全称为 Numerical Python,是 Python 的一个以矩阵为主的用于科学计算的基础软件包。NumPy 和 Pandas、Matpotlib 经常结合一起使用,所以被人们合称为数据分析三剑客。Numpy 中有功能强大的 ndarray 对象,能创建 N 维的数组,另外还提供很多通用函数,支持对数组的元素进行操作、支持对数组进行算法运算以及提供常用的统计函数

相比 List 对象,NumPy 数组有以下优势:
这是因为列表 list 的元素在系统内存中是分散存储的,而 NumPy 数组存储在一个均匀连续的内存块中。这样数组计算遍历所有元素,不像列表 list 还需要对内存地址进行查找,从而节省了计算资源。
Numpy数组能够运用向量化运算来处理整个数组,速度较快;而 Python 的列表则通常需要借助循环语句遍历列表,运行效率相对来说要差。
NumPy 中的矩阵计算可以采用多线程的方式,充分利用多核 CPU 计算资源,大大提升了计算效率。
Numpy 使用了优化过的 C API,运算速度较快。

创建一、二维数组

import numpy as np

one = np.array([1,2,3])
two = np.array([[1,2,3],[4,5,6]])

print(one)
print(two)

print('one: ', one.shape)
print('two: ', two.shape)

其中 shape 是数组的一个属性,表示获取数组大小(有多少行,有多少列),如果是一维数组,则只显示(行,)。代码中打印出 nd_two 的形状,输出为(2,3),表示数组中有 2 行 3 列。
二维数组需要2个以上[],([[1,2,3],[4,5,6]])。

在这里插入图片描述
使用内置函数创建数组

x0 = np.arange(1,20,3)
print(x0)

x2 = np.arange(10)
print(x2)

x1 = np.arange(15).reshape((5,3))
print(x1)
print(type(x1))


x3 = np.full((5,4),10,dtype=int)
print(x3)

x4 = np.eye(3,dtype=int)
print(x4)

x5 = np.random.randint(0,100,(4,5))
print(x5)

在这里插入图片描述

矩阵乘法

import numpy as np

# 矩阵的点乘
x1 = np.array([1,2,3,4])
print(x1)
theat = np.array([1,2,3,4]).T #转置
y = np.dot(theat,x1)
print(y)
print(type(y))

# 矩阵相乘
x2 = np.array([[1,2,3],[3,2,1],[4,5,6]])
y2 = np.array([1,2,3]).T
print(y2)
yy = np.dot(x2,y2)
print(yy)

使用 zeros(),ones(),full() 创建数组

import numpy as np
# 创建一个 3x4 的数组且所有值全为 0
x3 = np.zeros((3, 4), dtype=int)
print(x3)
# 创建一个 3x4 的数组且所有元素值全为 1
x4 = np.ones((3, 4), dtype=int)
print(x4)
# 创建一个 3x4 的数组,然后将所有元素的值填充为 2
x5 = np.full((3, 4), 2, dtype=int)
print(x5)

>>> 运行结果:

[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]

[[1 1 1 1]
 [1 1 1 1]
 [1 1 1 1]]

[[2 2 2 2]
 [2 2 2 2]
 [2 2 2 2]]

使用 eye() 创建单位矩阵

eye() 创建的数组特点是行数和列数都是一样。因为它创建出来的是单位矩阵,单位矩阵是正形矩阵,对角线的值均为 1,其他位置的值为 0。

import numpy as np
# 创建 3x3 的单位矩阵
x6 = np.eye(3, dtype=int)
print(x6)

>>> 运行结果:

[[1 0 0]
 [0 1 0]
 [0 0 1]]


4 使用 diag() 创建对角矩阵
diag() 是创建一个 NxN 的对角矩阵,对角矩阵是对角线上的主对角线之外的元素皆为 0 的矩阵。

import numpy as np
x7 = np.diag([1, 2, 3])
print(x7)

>>> 运行结果:

[[1 0 0]
 [0 2 0]
 [0 0 3]]

使用 random 创建随机数组

numpy 中的 random 中有很多内置函数,能简单介绍其中的几种。

import numpy as np
# 创建 2x2 数组且所有值是随机填充
x9 = np.random.random((2, 2))
print(x9)

# 创建一个值在 [0, 10) 区间的 3x3 的随机整数
x10 = np.random.randint(0, 10, (3, 3))
print(x10)

>>> 运行结果:

[[ 0.77233522  0.41516417]
 [ 0.22350126  0.31611254]]

[[0 6 5]
 [7 6 4]
 [5 5 9]]
### 使用NumPy中的N维数组Python中处理数值数据时,`ndarray` 是 NumPy 库的核心对象之一。这种多维数组提供了高效的存储方式以及丰富的操作函数来处理大规模的数据集[^1]。 #### 创建和检查数组 可以利用多种方法创建 `ndarray` 对象: - **从列表或其他序列类型转换而来** ```python import numpy as np my_list = [1, 2, 3] array_from_list = np.array(my_list) ``` - **通过特定功能生成** - 填充指定形状的全0或全1矩阵: ```python zeros_array = np.zeros((3, 4)) # 形状为(3,4)的零矩阵 ones_array = np.ones((2, 3)) # 形状为(2,3)的一矩阵 ``` - 构建具有固定间隔值的空间向量: ```python linspace_example = np.linspace(start=0, stop=10, num=5) ``` 为了查看已创建数组的信息,比如其维度大小、元素总数等,可调用如下属性: ```python print(array_from_list.shape) # 输出 (3,) print(zeros_array.size) # 输出 12 ``` #### 组合现有数组形成新数组 当需要将多个现有的子数组拼接成更大的结构化形式时,可以通过水平堆叠(`hstack`)、垂直堆叠(`vstack`)等方式实现: ```python A = np.eye(2) # 单位阵 B = np.full((2, 2), 7) combined_matrix = np.vstack([np.hstack([np.zeros_like(A), A]), np.hstack([B, B])]) ``` 对于更复杂的嵌套情况,则可能需要用到高级接口如 `bmat()` 函数[^2];不过需要注意的是该函数默认返回的是matrix类实例而非普通的ndarray,在必要情况下应当显式地将其转回常规数组格式。 #### 数据框列的选择 除了上述基本操作之外,有时还需要从业务逻辑相关的表格型数据集中提取感兴趣的字段作为新的视图展示出来。此时借助 Pandas 的 `.loc[]` 或者 `.iloc[]` 方法能够方便快捷地完成这一目标[^4]。 例如给定一个包含员工信息的数据帧df,从中选取姓名(name),年龄(age)及薪资(salary)三栏构成的新表单可通过下面语句获得: ```python selected_columns_df = df[['name', 'age', 'salary']] ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

玖玖玖_violet

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值