机器学习-NumPy2

数组的组合

array1 = np.arange(9).reshape(3,3)

先生成一个一维数组,内容为0-8,通过reshape函数转变为一个二维的数组,它有三个参数每个参数里有一个一维1*3的数组

\[0 1 2

3 4 5

6 7 8\]

简单运算

array2 = 2*array1

对array1里的元素逐一进行乘法运算

\[ 0 2 4

6 8 10

12 14 16\]

水平组合

a3 = np.hstack((array1,array2))

\[ 0 1 2 0 2 4

3 4 5 6 8 10

6 7 8 12 14 16\]

a4 = np.hstack((array2,array1))

\[ 0 2 4 0 1 2

6 8 10 3 4 5

12 14 16 6 7 8\]

a5 = np.hstack((array1,array2,array1))

\[ 0 1 2 0 2 4 0 1 2

3 4 5 6 8 10 3 4 5

6 7 8 12 14 16 6 7 8\]

a6 = np.concatenate((array1,array2),axis=1)#连接

\[ 0 1 2 0 2 4

3 4 5 6 8 10

6 7 8 12 14 16\]

#axis表示连接的方向,1为横向,0为竖向

垂直组合

a7 = np.vstack((array2,array1))

\[ 0 2 4

6 8 10

12 14 16

0 1 2

3 4 5

6 7 8\]

a8 = np.concatenate((array1,array2),axis=0)\[ 0 1 2

3 4 5

6 7 8

0 2 4

6 8 10

12 14 16\]

numpy内数组元素的切割

array1 = np.arange(16).reshape(4,4)

先生成一个一维数组,内容为0-15,通过reshape函数转变为一个二维的数组,它有一个参数,参数内的每个参数里有一个一维1*4的数组

\[ 0 1 2 3

4 5 6 7

8 9 10 11

12 13 14 15\]

水平切割

a = np.hsplit(array1,2)#其中第2个参数 2表示将矩阵array1进行2等份切分

array(\[\[ 0, 1,

4, 5,

8, 9,

12, 13]), array(\[ 2, 3,

6, 7,

10, 11,

14, 15\]\])

b = np.split(array1,2,axis=1)

array(\[\[ 0, 1,

4, 5,

8, 9,

12, 13]), array(\[ 2, 3,

6, 7,

10, 11,

14, 15\]\])

垂直切割

c = np.vsplit(array1,2)#

array(\[\[0, 1, 2, 3,

4, 5, 6, 7]), array(\[ 8, 9, 10, 11,

12, 13, 14, 15\]\])

d = np.split(array1,2,axis=0)

array(\[\[0, 1, 2, 3,

4, 5, 6, 7]), array(\[ 8, 9, 10, 11,

12, 13, 14, 15\]\])

强制切割
水平切割

e = np.array_split(array1,3,axis=1)

array(\[\[ 0, 1,

4, 5,

8, 9,

12, 13]), array(\[ 2,

6,

10,

14]), array(\[ 3,

7,

11,

15\]\])

垂直切割

f = np.array_split(array1,3,axis=0)

array(\[\[0, 1, 2, 3,

4, 5, 6, 7]),

array(\[ 8, 9, 10, 11]),

array(\[12, 13, 14, 15])]

array1 = np.arange(25).reshape(5,5)

\[ 0 1 2 3 4

5 6 7 8 9

10 11 12 13 14

15 16 17 18 19

20 21 22 23 24\]

g = np.array_split(array1,3,axis=1)

array(\[\[ 0, 1,

5, 6,

10, 11,

15, 16,

20, 21]), array(\[ 2, 3,

7, 8,

12, 13,

17, 18,

22, 23]), array(\[ 4,

9,

14,

19,

24\]\])

h = np.array_split(array1,3,axis=0)

array(\[\[0, 1, 2, 3, 4,

5, 6, 7, 8, 9]), array(\[10, 11, 12, 13, 14,

15, 16, 17, 18, 19\]\]), array(\[\[20, 21, 22, 23, 24\]\])

数组的算术运算

array1 = np.arange(1,5,1).reshape(2,2)

array2 = 2*array1

\[1 2

3 4\]

\[2 4

6 8\]

数组的加法【对应位置的元素求和】

print(array1 + array2)#前提 矩阵shape必须一致

\[ 3 6

9 12\]

数组的减法对应位置元素相减

print(array1 - array2)

\[-1 -2

-3 -4\]

数组的乘法【对应位置相乘】

print(array1 * array2)

\[ 2 8

18 32\]

数组的除法对应位置相除

print(array1 / array2)

\[0.5 0.5

0.5 0.5\]

数组的取余(%)

print(array2 % array1)

\[0 0

0 0\]

数组的取整

print(array1 // array2)

\[0 0

0 0\]

数组的深拷贝和浅拷贝

array1 = np.array(1,2,3)

赋值

array2 = array1

更改array2的元素的值

array20 = 100

print(array2)

100 2 3

print(array1)

100 2 3

浅拷贝

array3 = array1.copy()

array30 = 10

print(array3)

100 2 3

print(array1)

100 2 3

numpy内的随机模块

randint(start,end):

产生一个随机整数

(0,10) ->左闭右开的区间

随机种子random

np.random.seed(1000)#random 矩阵类型随机,1、只能来管理numpy中的随机值2、随机种子只能对下面的随机函数产生1次种子效果

r1 = np.random.randint(0,10)

print(r1)

a = \[\]

for i in range(100):

a0 = np.random.randint(0,10)

a.append(a0)

print(a)

plt.hist(a,color='r')#绘制直方图,

plt.show()

rand() ->(0,1)之间的随机浮点数

#np.random.seed(100)

r1 = np.random.rand()

print(r1)

normal() ->生成一些符合正态分布的数据

N~(0,1)

numpy.random.normal(loc=0.0, scale=1.0, size=None)

参数说明:

loc:正态分布的均值(期望值),决定了分布的中心位置,默认值为 0.0

scale:正态分布的标准差,决定了分布的离散程度,默认值为 1.0

size:输出数组的形状,可以是整数(表示一维数组长度)或元组(表示多维数组形状),默认值为 None(返回单个值)

r2 = np.random.normal()

print(r2)

生成随机数矩阵

r3 = np.random.randint(0,10,size=(5,5))

print(r3)

r4 = np.random.rand(5,5)

print(r4)

r5 = np.random.normal(5,10,size=(5,5))

print(r5)

常用函数

array1 = np.random.normal(size = (3,3))

print(array1)

一些函数

求方差

print(array1.var())

求标准差

a = array1.std()

求均值

b = array1.mean()

求和

c = array1.sum()

求中位数

#array1.median()

d = np.median(array1)

求和运算
对矩阵的行求和

e = array1.sum(axis=1)

对矩阵的列进行求和

f = array1.sum(axis=0)

矩阵的运算

生成两个基数组

a = np.arange(4).reshape(2,2)

b = a.copy()

矩阵的运算
加减乘除(求逆)
加减 ->对应元素加减

矩阵的乘法【点乘】

#a * b

a1 = a.dot(b)

a2 = np.dot(a,b)

矩阵求逆

"""

inv():

并不是所有的矩阵都有逆;

即使你没有逆,给你一个逆【伪逆】

"""

a3 = np.linalg.inv(a)

a4 = a.dot(\[-1.5, 0.5,

1. , 0. ])

print(a4)

读取文件

numpy.loadtxt() :从文本文件中加载数据。这个函数假定文件中的每一行都有相同数量的值,并将这些值分隔开。

你可以使用 delimiter 参数指定分隔符,如逗号、制表符等。例如:

import numpy as np

data = np.loadtxt('datingTestSet2.txt', delimiter='\t')

print(data)

将数组保存到txt文件中

import numpy as np

array = np.array(\[1, 2, 3, 4, 5, 6, 7, 8, 9])# 创建一个 NumPy 数组

np.savetxt('array.txt', array)# 使用 savetxt() 将数组保存到文本文件中

相关推荐
天涯明月19931 小时前
AI Agent应用深度研究报告
人工智能·大模型·agent
鹿鸣天涯1 小时前
AI办公场景的数据安全和Token自主方案
人工智能
doudoudalao1 小时前
2026年AI生成电商带货视频工具有哪些?TikTok带货素材生产方案与对比
大数据·人工智能
OPEN-F1 小时前
Python进阶教程:单元测试与代码质量
开发语言·python·单元测试
网络研究院1 小时前
不装了!Claude背后的AI巨头也开始造芯片了,英伟达的“铁饭碗”要被砸?
人工智能·科技·ai·芯片·供应链·底层·产业链
laboratory agent开发1 小时前
企业AI应用定制中的转人工交接:上下文为何接不上
人工智能
其实防守也摸鱼1 小时前
Codex破局:前端组件秒级生成的技术文章大纲
开发语言·前端·人工智能·学习·安全·web安全
audyxiao0011 小时前
重磅发布|《上海市教育发展“十五五”规划》及其解读
人工智能·十五五·教育发展
兰亭妙微UI设计公司1 小时前
兰亭妙微UI设计:Neemo Project 企业AI项目管理后台全案运营价值解析
人工智能·ui