机器学习中数据处理与可视化的python、numpy等常用函数

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sinat_35512245/article/details/78574306

写在前面:本文所针对的python版本为python3.0以上!


np.tile()

tile()相当于复制当前行元素或者列元素

import numpy as np

m1 = np.array([1, 2, 3, 4])
# 行复制两次,列复制一次到一个新数组中
print(np.tile(m1, (2, 1)))
print("===============")
# 行复制一次,列复制两次到一个新数组中
print(np.tile(m1, (1, 2)))
print("===============")
# 行复制两次,列复制两次到一个新数组中
print(np.tile(m1, (2, 2)))

输出:

D:\Python\python.exe E:/ML_Code/test_code.py
[[1 2 3 4]
 [1 2 3 4]]
===============
[[1 2 3 4 1 2 3 4]]
===============
[[1 2 3 4 1 2 3 4]
 [1 2 3 4 1 2 3 4]]

sum()

sum函数是对元素进行求和,对于二维数组以上则可以根据参数axis进行分别对行和列进行求和,axis=0代表按列求和,axis=1代表行求和。

import numpy as np

m1 = np.array([1, 2, 3, 4])
# 元素逐个求和
print(sum(m1))

m2 = np.array([[6, 2, 2, 4], [1, 2, 4, 7]])
# 按列相加
print(m2.sum(axis=0))
# 按行相加
print(m2.sum(axis=1))

输出:

D:\Python\python.exe E:/ML_Code/test_code.py
10
[ 7  4  6 11]
[14 14]

Process finished with exit code 0

shape和reshape

import numpy as np

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

b = np.reshape(a, 6)
print(b)

# -1是根据数组大小进行维度的自动推断
c = np.reshape(a, (3, -1))  # 为指定的值将被推断出为2
print(c)

输出:

D:\python-3.5.2\python.exe E:/ML_Code/test_code.py

(2, 3)

---

[1 2 3 4 5 6]

---

[[1 2]
 [3 4]
 [5 6]]

numpy.random.rand

import numpy as np

# 创建一个给定类型的数组,将其填充在一个均匀分布的随机样本[0, 1)中

print(np.random.rand(3))

print(np.random.rand(2, 2))

输出:

D:\python-3.5.2\python.exe E:/ML_Code/test_code.py

[ 0.03568079  0.68235136  0.64664722]

---

[[ 0.43591417  0.66372315]
 [ 0.86257381  0.63238434]]

zip()

zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。 如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表。

import numpy as np

a1 = np.array([1, 2, 3, 4])
a2 = np.array([11, 22, 33, 44])

z = zip(a1, a2)

print(list(z))

输出:

D:\Python\python.exe E:/ML_Code/test_code.py
[(1, 11), (2, 22), (3, 33), (4, 44)]

Process finished with exit code 0

注意点:在python 3以后的版本中zip()是可迭代对象,使用时必须将其包含在一个list中,方便一次性显示出所有结果。否则会报如下错误:

<zip object at 0x01FB2E90>

矩阵相关

import numpy as np

# 生成随机矩阵
myRand = np.random.rand(3, 4)
print(myRand)

# 生成单位矩阵
myEye = np.eye(3)
print(myEye)

from numpy import *

# 矩阵所有元素求和
myMatrix = mat([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(sum(myMatrix))

# 计算矩阵的秩
print(linalg.det(myMatrix))

# 计算矩阵的逆
print(linalg.inv(myMatrix))

注意:

from numpy import *
import numpy as np

vector1 = mat([[1, 2], [1, 1]])
vector2 = mat([[1, 2], [1, 1]])
vector3 = np.array([[1, 2], [1, 1]])
vector4 = np.array([[1, 2], [1, 1]])

# Python自带的mat矩阵的运算规则是两者都按照矩阵乘法的规则来运算
print(vector1 * vector2)

# Python自带的mat矩阵的运算规则是两者都按照矩阵乘法的规则来运算
print(dot(vector1, vector2))

# numpy乘法运算中"*"是数组元素逐个计算
print(vector3 * vector4)

# numpy乘法运算中dot是按照矩阵乘法的规则来运算
print(dot(vector3, vector4))

输出:

D:\python-3.5.2\python.exe D:/PyCharm/py_base/py_numpy.py
[[3 4]
 [2 3]]
 ---
[[3 4]
 [2 3]]
 ---
[[1 4]
 [1 1]]
 ---
[[3 4]
 [2 3]]

向量相关

两个n维向量A(X11,X12,X13,...X1n)A(X_{11},X_{12},X_{13},...X_{1n})与B(X21,X22,X23,...X2n)B(X_{21},X_{22},X_{23},...X_{2n})之间的欧式距离为:

d12=∑k=1n(x1k−x2k)2−−−−−−−−−−−−√

d_{12}=\sqrt{\sum_{k=1}^{n}(x_{1k}-x_{2k})^{2}}

表示成向量运算的形式:

d12=(A−B)(A−B)T−−−−−−−−−−−−−−√

d_{12}=\sqrt{(A-B)(A-B)^{T}}

from numpy import *

# 计算两个向量的欧氏距离

vector1 = mat([1, 2])
vector2 = mat([3, 4])
print(sqrt((vector1 - vector2) * ((vector1 - vector2).T)))

概率相关

from numpy import *
import numpy as np

arrayOne = np.array([[1, 2, 3, 4, 5], [7, 4, 3, 3, 3]])

# 计算第一列的平均数
mv1 = mean(arrayOne[0])

# 计算第二列的平均数
mv2 = mean(arrayOne[1])

# 计算第一列的标准差
dv1 = std(arrayOne[0])

# 计算第二列的标准差
dv2 = std(arrayOne[1])

print(mv1)
print(mv2)
print(dv1)
print(dv2)

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏数据结构与算法

P3717 [AHOI2017初中组]cover

题目背景 以下为不影响题意的简化版题目。 题目描述 一个n*n的网格图上有m个探测器,每个探测器有个探测半径r,问这n*n个点中有多少个点能被探测到。 输入输出...

34870
来自专栏数据结构与算法

洛谷 P1313 计算系数

题目描述 给定一个多项式 ,请求出多项式展开后 项的系数。 输入输出格式 输入格式: 输入文件名为factor.in。 共一行,包含5 个整数,分别为 a...

32730
来自专栏人工智能LeadAI

Tensorflow教程: tf.Variable() 和tf.get_variable()

1、使用tf.Variable时,如果检测到命名冲突,系统会自己处理。使用tf.get_variable()时,系统不会处理冲突,而会报错

14130
来自专栏程序生活

Tensorflow教程(十三) tf.Variable() 和tf.get_variable()1 简介2 区别3 实例

23430
来自专栏我是业余自学C/C++的

下三角矩阵

27020
来自专栏抠抠空间

python常见模块之random模块

python常见模块之random模块 import random print(random.random()) #随机产生一个0-1之间的小数 p...

318100
来自专栏算法修养

单调队列,单调栈总结

最近几天接触了单调队列,还接触了单调栈,就总结一下。 其实单调队列,和单调栈都是差不多的数据类型,顾名思义就是在栈和队列上加上单调,单调递增或者单调递减。当...

61680
来自专栏JasonhavenDai

快速学会LATEX数学符号和公式1.概念2.空白距离3.特殊字符$ % ^ & _ { } ~ \4. 数学公式5.参考

1.概念 LATEX 源文件的格式为普通的 ASCII 文件,你可以使用任何文本编辑器来创建。LATEX 源文件不仅包括你所要排版的文本,还包括 LATEX...

39280
来自专栏calmound

zoj 1315 Excuses, Excuses!

题意:简单题,读懂题目就很好写了,这里要说的是,题目并没有叙述每句话里的单词长度是多少,所以导致我的数组开小了,一直SF,后来把数组开大后就A了        ...

35650

在Python机器学习中如何索引、切片和重塑NumPy数组

在Python中,数据几乎被普遍表示为NumPy数组。

72890

扫码关注云+社区

领取腾讯云代金券