Numpy的常用计算属性介绍

平方差: 与平均值偏差平方的平均值

标准差: 方差的平方根

正态分布:

正态分布(Normal Distribution),也叫高斯分布,是统计学中最常见、最重要的连续概率分布之一。它的核心特点可以用一句话概括:大多数数据集中在平均值附近,越远离平均值的数据越少,整体形状像一口"钟"------所以也叫"钟形曲线"。

python 复制代码
# 导包
import numpy as np
import pandas as pd

1.Numpy的属性介绍

1.1 创建ndarray对象

python 复制代码
# numpy -> 和数学操作相关的库, numpy的数组是多维的, 并且是固定类型的, numpy的数组是ndarray, 主要用于: 矩阵运算

# 1. 创建numpy的 ndarray对象.
arr1 = np.arange(15).reshape(3, 5)
print(arr1)

[[ 0  1  2  3  4]
 [ 5  6  7  8  9]
 [10 11 12 13 14]]

1.2 演示numpy的常用属性

python 复制代码
print(f'numpy的轴: {arr1.ndim}')       # 2
print(f'numpy的维度: {arr1.shape}')    # (3, 5),  3行5列
print(f'numpy的元素类型: {arr1.dtype}') # int32
print(f'numpy的元素个数: {arr1.size}')  # 15
print(f'numpy的元素占用字节数: {arr1.itemsize}')    # 4 = 32/8
print(f'numpy的元素类型: {type(arr1)}')  #  <class 'numpy.ndarray'>

2.创建Numpy的ndarray对象

2.1 array()函数, 把Python列表 -> ndarray对象

python 复制代码
# 1. 创建python列表对象.
my_list = [11, 22, 33, 44, 55]
print(type(my_list))    #  <class 'list'>

# 2. 把python列表 -> ndarray对象.
arr2 = np.array(my_list)
print(arr2)         # [11 22 33 44 55]
print(type(arr2))   # <class 'numpy.ndarray'>

2.2 arange()函数, 创建ndarray对象

python 复制代码
# arange(起始, 结束, 步长, dtype=类型), 类似于 Pythong中的range()函数. 
# 1. 创建ndarray对象.
arr3 = np.arange(0, 10, 2, dtype=np.int64)
# 2. 打印ndarray对象.
print(arr3)
print(type(arr3))
print(f'元素的类型: {arr3.dtype}')

[0 2 4 6 8]
<class 'numpy.ndarray'>
元素的类型: int64

2.3 随机数生成 ndarray对象

python 复制代码
# 1. random.rand() 生成 0.0 ~ 1.0之间, 包左不包右的 随机小数矩阵.
arr4 = np.random.rand(3, 5)     # 3行5列
print(arr4)
print(type(arr4))


[[0.58002155 0.8210968  0.3555357  0.83037213 0.55565257]
 [0.90465971 0.27219947 0.4622153  0.99728997 0.48724815]
 [0.67312207 0.07415796 0.72759944 0.32860675 0.39319645]]
<class 'numpy.ndarray'>
python 复制代码
# 2. random.randint(起始值, 结束值, size=(行,列)) 生成指定范围, 包左不包右的 随机整数矩阵.
arr5 = np.random.randint(3, 9, size=(2, 6))     # 3 ~ 9之间, 包左不包右. 2行6列
print(arr5)
print(type(arr5))

[[6 8 5 6 4 4]
 [7 3 3 8 3 5]]
<class 'numpy.ndarray'>
python 复制代码
# 3. random.uniform(起始值, 结束值, size=(行,列)) 生成指定范围, 包左不包右的 随机小数矩阵.
arr6 = np.random.uniform(3, 9, size=(2, 6))
print(arr6)
print(type(arr6))

[[3.03155165 7.31321654 5.36135413 4.5904866  8.87716676 4.41707935]
 [4.48983879 3.21564226 8.98505777 4.12811231 8.95322474 5.05137227]]
<class 'numpy.ndarray'>

2.4 numpy的类型转换 astype()

python 复制代码
# 1. 创建ndarray对象.
arr7 = np.arange(0, 10, 2, dtype=np.int64)
print(arr7)
print(arr7.dtype)

[0 2 4 6 8]
int64
python 复制代码
# 2. 把上述的 arr7 ndarray对象的元素 从 int64类型 -> float32
arr8 = arr7.astype(np.float32)
print(arr8)
print(arr8.dtype)

[0. 2. 4. 6. 8.]
float32

2.5 创建等比数列

python 复制代码
# 1. 创建等比数列. 参1: 起始值(充当10的指数), 参2: 结束值(充当10的指数), 参3: 元素个数.
arr9 = np.logspace(0, 3, 4)
# 2. 打印ndarray对象.
print(arr9)
print(arr9.dtype)

[   1.   10.  100. 1000.]
float64
python 复制代码
# 3. 创建等比数列. 参1: 起始值(充当2的指数), 参2: 结束值(充当2的指数), 参3: 元素个数, 参4: 修改底数(基数)为 2, 参5: 修改数据类型为 int64.
arr9 = np.logspace(0, 3, 4, base=2, dtype=np.int64)
# 4. 打印ndarray对象.
print(arr9)
print(arr9.dtype)

[1 2 4 8]
int64

2.6 创建等差数列

python 复制代码
# 1. 创建等差数列. 参1: 起始值, 参2: 结束值, 参3: 元素个数, 参4: 是否包含结束值, 参5: 修改数据类型为 int32.
arr10 = np.linspace(1, 10, 4, endpoint=False, dtype=np.int32)
# 2. 打印ndarray对象.
print(arr10)
print(arr10.dtype)

[1 3 5 7]
int32

3.演示Numpy的常用函数

3.1 基本函数

python 复制代码
# 1.创建标准的正太分布的序列.
arr1 = np.random.randn(3, 5)
print(arr1)

[[-0.46953414 -0.31343975  0.36591142 -1.4658582   0.09914008]
 [ 0.63579989  1.64387641 -0.82781252 -0.54235244  0.09036224]
 [ 0.59429969  0.50850006  0.38111194  1.31434605 -0.02857214]]
python 复制代码
# 2. 测试基本函数. 
# print(np.ceil(arr1))    # 天花板数 -> 向上取整, 比它大的, 最小的那个整数.
# print(np.floor(arr1))     # 地板数
# print(np.rint(arr1))       # 四舍五入
# print(np.abs(arr1))         # 绝对值

# print(np.multiply(arr1, arr1))  # 矩阵乘法(行列数一致)
# print(arr1 * arr1)             # 效果同上.

# print(np.divide(arr1, arr1))    # 矩阵除法(行列数一致)
print(np.where(arr1 > 0, 1, -1))  # 类似于python中的 三元表达式

[[-1 -1  1 -1  1]
 [ 1  1 -1 -1  1]
 [ 1  1  1  1 -1]]

3.2 统计函数

python 复制代码
# 1. 定义ndarray对象(数组对象)
arr1 = np.arange(12).reshape(3, 4)
print(arr1)

[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]
python 复制代码
# 2. 验证 累加和.
print(np.cumsum(arr1))  # [ 0  1  3  6 10 15 21 28 36 45 55 66]
python 复制代码
# 3. 验证 求和.
print(np.sum(arr1))  # 66
print(np.sum(arr1, axis=0))     # 0 -> 列
print(np.sum(arr1, axis=1))     # 1 -> 行

66
[12 15 18 21]
[ 6 22 38]

3.3 去重函数

python 复制代码
# 1. 定义数组.
arr1 = np.array([[1, 2, 1], [2, 3, 5]])   # 2行3列
print(arr1)

[[1 2 1]
 [2 3 5]]
python 复制代码
# 2. 对上述元素去重.
arr2 = np.unique(arr1)  # 去重, 返回新副本
print(f'arr1: {arr1}')  # [[1 2 1] [2 3 5]]
print(f'arr2: {arr2}')  # [1 2 3 5]

3.4 排序函数

python 复制代码
# 1. 定义数组
arr1 = np.array([11, 33, 22, 66, 55])
print(arr1)

[11 33 22 66 55]
python 复制代码
# 2. 通过 np.sort()方式排序 -> 返回新副本.
arr2 = np.sort(arr1)
print(f'arr1: {arr1}')  # [11 33 22 66 55]
print(f'arr2: {arr2}')  # [11 22 33 55 66]
python 复制代码
# 3. 通过 数组对象.sort() -> 直接修改原数组
print(f'排序前 arr1: {arr1}')
arr1.sort()
print(f'排序后 arr1: {arr1}')

排序前 arr1: [11 33 22 66 55]
排序后 arr1: [11 22 33 55 66]

4. Numpy的矩阵运算

4.1 减法运算

python 复制代码
# 1. 定义数组.
arr1 = np.array([10, 20, 30, 40])
arr2 = np.arange(4)
# 2. 打印数组.
print(f'arr1: {arr1}')
print(f'arr2: {arr2}')

arr1: [10 20 30 40]
arr2: [0 1 2 3]
python 复制代码
# 3. 减法运算.
print(arr1 - arr2)      # 对应元素做减法运算.

[10 19 28 37]
python 复制代码
# 4. 加法运算.
print(arr1 + arr2)

[10 21 32 43]

4.2 矩阵乘法

python 复制代码
# 1. 定义数组.
arr1 = np.array([[1, 2, 3], [4, 5, 6]])
arr2 = np.array([[1, 2, 3], [4, 5, 6]])
# 2. 打印数组
print(f'arr1: {arr1}')
print(f'arr2: {arr2}')

arr1: [[1 2 3]
 [4 5 6]]
arr2: [[1 2 3]
 [4 5 6]]
python 复制代码
# 3. 矩阵乘法, 行列数一致. 
print(arr1 * arr2)              # 对应位置(坐标)的元素做乘法运算.
print(np.multiply(arr1, arr2))  # 效果同上

[[ 1  4  9]
 [16 25 36]]
[[ 1  4  9]
 [16 25 36]]
python 复制代码
# 4. 矩阵乘法, 行列数不一致.
arr3 = np.array([[1, 2, 3], [4, 5, 6]])
arr4 = np.array([[9, 8], [6, 5], [3, 2]])
# 5. 打印数组.
print(f'arr3: {arr3}')
print(f'arr4: {arr4}')

arr3: [[1 2 3]
 [4 5 6]]
arr4: [[9 8]
 [6 5]
 [3 2]]
python 复制代码
# 6. 矩阵乘法 -> 行列数不一致.
# print(arr3 * arr4)      # 报错, 行列数不一致.

print(arr3 @ arr4)         # 语法糖,   A: 2行3列, B: 3行2列.   A列 = B行即可操作, 结果是: A行B列
print(np.dot(arr3, arr4))  # 效果同上
print(arr3.dot(arr4))      # 效果同上

[[30 24]
 [84 69]]
[[30 24]
 [84 69]]
[[30 24]
 [84 69]]
python 复制代码
# 7. A列 = B行即可操作, 结果是: A行B列
arr3 = np.array([[1, 2, 3, 4], [4, 5, 6, 7]])   # 2行4列
arr4 = np.array([[9, 8], [6, 5], [3, 2]])       # 3行2列
print(arr3 @ arr4)  # 不符合 A列 = B行, 所以无法操作.

ValueError: matmul: Input operand 1 has a mismatch
 in its core dimension 0, with gufunc signature 
(n?,k),(k,m?)->(n?,m?) (size 3 is different from 4)
相关推荐
春日见9 小时前
拉取与合并:如何让个人分支既包含你昨天的修改,也包含 develop 最新更新
大数据·人工智能·深度学习·elasticsearch·搜索引擎
寻寻觅觅☆9 小时前
东华OJ-基础题-106-大整数相加(C++)
开发语言·c++·算法
l1t9 小时前
在wsl的python 3.14.3容器中使用databend包
开发语言·数据库·python·databend
赶路人儿10 小时前
Jsoniter(java版本)使用介绍
java·开发语言
ceclar12310 小时前
C++使用format
开发语言·c++·算法
码说AI11 小时前
python快速绘制走势图对比曲线
开发语言·python
Gofarlic_OMS11 小时前
科学计算领域MATLAB许可证管理工具对比推荐
运维·开发语言·算法·matlab·自动化
星空下的月光影子11 小时前
易语言开发从入门到精通:补充篇·网络爬虫与自动化采集分析系统深度实战·HTTP/HTTPS请求·HTML/JSON解析·反爬策略·电商价格监控·新闻资讯采集
开发语言
Elastic 中国社区官方博客11 小时前
如何防御你的 RAG 系统免受上下文投毒攻击
大数据·运维·人工智能·elasticsearch·搜索引擎·ai·全文检索
老约家的可汗11 小时前
初识C++
开发语言·c++