数组的组合
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() 将数组保存到文本文件中