飞不高 发表于 2024-9-10 22:17:22

numpy03:numpy广播机制,花式索引取值,统计方法,数组的拆分与合并,线性

numpy广播机制

import numpy as np

arr1 = np.arange(24).reshape(4, 6)
print(arr1)

print(arr1 + 2)# 数组中的每一个元素都会进行运算

arr2 = np.arange(100,124).reshape(4,6)
print(arr2)

# 两个数组相加--》形状相同,数组索引对应的元素会进行相加
print(arr1 + arr2)

# 一维数组--》形状不同,行也不同,列相同
arr3 = np.arange(0,6)
print(arr3)
print(arr2-arr3)

# 行相同,列不同
arr4 = np.arange(0,4).reshape(4,1)
print(arr4)
print(arr2-arr4)
# 当两个数组行或者列不相同的时候(必须要有一个相同),就会出现广播机制运算
# 进行拆分,如果是行相同,就逐行运算,如果是列相同,就逐列运算 花式索引取值

import numpy as np

# 一维数组
arr1 = np.random.random(12)
print(arr1)

# 目标是一维数组,索引的结果就是对应的元素
index1 = np.array()
print(arr1)

# 二维数组
index2 = np.array([,
          ],dtype=np.int32)
print(index2)
print(arr1)
# 根据index2中的每一个元素,去获取到arr1中的相应的数据,但是不改变维度(2行3列的二维数组)
统计方法

import numpy as np

# 3行4列的二维数组
arr1 = np.arange(11,23).reshape(3,4)
print(arr1)

# 最大值
print(arr1.max())# 方法1:直接对象点上方法
print(np.max(arr1))# 方法2:numpy点上方法,里面传入数组对象

# 最小值
print(arr1.min())

print(arr1.max())# 针对第二行提取最大值
print(arr1.min())# 针对第二行提取最小值
print(arr1[:, 0].max())# 针对第一列提取最大值
print(arr1[:, 0].min())# 针对第一列提取最小值

# 最大值索引   ,索引值是降维以后的索引值
print(arr1.argmax())
# 最小值索引
print(arr1.argmin())

# 计算总和,默认针对所有元素进行求和运算
print(arr1.sum())

print(arr1.sum(axis=1))# 行求和
print(arr1.sum(axis=0))# 列求和

# 计算第2列的总和
print(arr1[:,1].sum())

# 平均值:将所有元素加起来,除以元素个数
print(arr1.mean())

print(arr1.mean(axis=1))# 行平均值
print(arr1.mean(axis=0))# 列平均值

# 累加的和
print(arr1.cumsum())

# 累乘的和
print(arr1.cumprod())

"""
方差
    统计的方法是 每个样本值 与 全体样本值 的平均数之差 的平方值的平均值
    mean((x-x.mean())**2)
"""
print(np.var())# mean = 2.5
# (1-2.5)**2(2-2.5)**2

"""标准差
    是方差的一个算数平方根
    std = sqrt(mean((x-x.mean())**2)
"""
print(np.std())
print(np.sqrt(np.var())) 数组的拆分与合并

import numpy as np

arr1 = np.random.randint(0, 10, (3, 12))
print(arr1)

# 拆分
# hsplit()垂直拆分 ↓
print(np.hsplit(arr1, 4))# 垂直拆分成3个平均的数组

a1, a2, a3, a4 = np.hsplit(arr1, 4)
print(a1)

# 指定拆分
print(np.hsplit(arr1, (3, 4)))# 在指定的索引位置进行拆分

# vsplit()水平拆分->

arr2 = np.random.randint(0, 10, (6, 3))
print(arr2)

# 水平拆分,切分成两个平均的二维数组
print(np.vsplit(arr2, 2))



# 数组合并
# hstack水平合并
# vstack垂直合并
arr3 = np.random.randint(0, 10, (2, 2))
arr4 = np.random.randint(0, 10, (2, 2))
print(arr3)
print(arr4)

# 水平合并成两行四列的二维数组
print(np.hstack(tup=(arr3, arr4)))
# 垂直合并成一个4行2列的二维数组
print(np.vstack(tup=(arr3, arr4)))
线性代数方法

import numpy as np

# 创建两个二维数组
arr1 = np.array([, ])
arr2 = np.array([, ])
print(arr1)
print(arr2)
)
# 数组的点积运算 np.dot
print(np.dot(arr1, arr2))
"""
将arr1的每一行与arr2的每一列进行对应元素的相乘,且相加
1*11+2*13 = 37
1*12 +2*14 = 40
3*11+4*13 = 85
3*12+4*14 = 92
"""

# 向量的点积运算 np.vdot
print(np.vdot(arr1, arr2))
"""
将数组展开成一维数组,进行索引元素内积,且相加
1*11+2*12+3*13+4*14 = 130
"""

# 数组元素内积np.inner
a = np.array()
b = np.array()
print(np.inner(a, b))# 1*0+2*1+3*0= 2

# 二维元素
arr1 = np.array([, ])
arr2 = np.array([, ])
print(np.inner(arr1, arr2))
"""
数组对应元素的内积
1*11+2*12 = 35
1*13 +2*14 = 41
3*11+4*12 = 81
3*13+4*14 = 95
"""

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: numpy03:numpy广播机制,花式索引取值,统计方法,数组的拆分与合并,线性