欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【机器学习】numpy基础铺垫

程序员文章站 2023-12-27 18:54:21
...

什么是Numpy?

一种支持数学高维度和矩阵计算的python包,集成在Anaconda中。
 

Numpy基础

import numpy as np

#numpy的基本用法
array = np.array((1,2,3))
print(array)

#numpy的几种属性
print("number of dim" , array.ndim) #维度
print("Shape",array.shape)  #行数和列数
print("Size",array.size)    #元素个数


#指定数据
a = np.array([2 , 23 , 4] , dtype = np.int)
print(a.dtype)

a = np.array([2 , 23 , 4] , dtype = np.int32)
print(a.dtype)

a = np.array([2 , 23 , 4] , dtype = np.float)
print(a.dtype)

a = np.array([2 , 23 , 4] , dtype = np.float32)
print(a.dtype)


#创建特定数据
a = np.array([[2 , 23 , 4] , [2 , 32 , 4]])
print(a)

#全0 / 1,全空数组
a = np.zeros((3 , 4))
b = np.ones((2 , 3) , dtype = np.int32)
c = np.empty((3 , 4))   # 其实每个数值都接近0
print(a)
print(b , b.dtype)
print(c)

#连续数组
a = np.arange(10 , 20 , 2) #10 - 19的数据,2步
print(a)
a = np.arange(13).reshape((3 , 4)) # 将一行数据变成一个3*4的其他的都不行
print(a)

#linspace:分割线段,如何分割?当然也可以reshape
a = np.linspace(1 , 10 , 20)
print(a)

 

numpy基础运算1

import numpy as np
a = np.array((1 , 2 , 3))
b = np.array((2 , 3 , 4))

c = a + b**2
c = a * b   #对每一项对应乘
c = 10 * np.sin(a)  #数学函数工具
print(b > 3)    # 对每一项进行判断

a = np.array([[1 , 1] , [0 , 1]])
b = np.arange(4).reshape((2 , 2))   # 默认将数据填进去
# 矩阵乘积
# c_dot = np.dot(a , b)
# c_dot_2 = a.dot(b)

#sum(),min(),max()三种脚本,横 1纵 0
a = np.random.random((2 , 4))   #随机产生一个(0,1)之间的数
print(np.sum(a , axis = 1))    #对 a 的所有数据求和,axis是轴的意思,axis = 1按照横轴的意思
print(np.min(a , axis = 0))    #axis = 0 是按纵轴的意思
print(np.max(a))

 

numpy基础运算2

import numpy as np

# argmin与 argmax :对应矩阵的最小元素和最大元素索引

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

print(np.argmin(a))
print(np.argmax(a))


#mean, average 求平均值
print(np.mean(a))
print(np.average(a))
print(a.mean())

#求中位数
print(a.median())

# 累加函数:每个元素加到这一项的时候的元素和
print(np.cumsum(a)) 

#累差函数:计算每一行后一项与前一项的差,将差表示出来。
print(np.diff(a))   

#将矩阵中非零元素的行和列的值单独构成两个矩阵。
print(np.nonzero(a))    

#排序:每一行单独排序,从小到大
a = np.arange(14 , 2 , -1).reshape((3 , 4))
print(np.sort(a))

# 转置 :两种方式
#print(np.transpose(a))
print(a.T)

# 切分:将数组中大于最大值的数字用最大值代替,小于最小值的数字用最小值代替
print(np.clip(a , 5 , 9))

numpy索引

import numpy as np

# 一维矩阵索引
#a = np.arange(3 , 14)
#print(a[3])

# 二维矩阵索引
a = np.arange(3 , 15).reshape((3 , 4))
print(a[2]) # 这里输出的是第二行

# 输出二维地址位置
print(a[1][1])
print(a[1 , 1])

# 利用 list切片操作
print(a[1 , 1:3])   #将第2行的第2-4(但不包含第4列)的数据切分出来.

#逐列打印操作:先转置,再输出
for column in a.T:
    print(column)

#迭代输出,两种形式。
print(a.flatten())  # 将多为矩阵展开成 1行的数列。

for item in a.flat: 
    print(item)	# flat是一个迭代器,将每一个数据都迭代一遍输出。

 

numpy 合并

import numpy as np

# vstack的数据合并
a = np.array([1 , 1 , 1 , 1])
b = np.array([2 , 2 , 2 , 2])


c = np.vstack((a , b))
print(a.shape , c.shape)
print(np.vstack((a , b)))

d = np.hstack((a , b))  #horizontal stack 行合并,左右合并
print(d)
print(a.shape , d.shape)


# 1 * n这种是不能利用a.T转置的,需要利用下面这种手法
print(a[np.newaxis, : ])
print(a[np.newaxis , : ].shape)
print(a[: , np.newaxis])
print(a.T)

 

Numpy array 分割

import numpy as np

a = np.arange(12).reshape((3 , 4))
print(a)

# 等量分割
print(np.split(a , 2 , axis = 1))   # 将两列分成一组,且必须得是能分的,否则会报错。
print(np.split(a , 3 , axis = 0))   # 将3行分成一组,同上。

# 不等量分割
print(np.array_split(a , 3 , axis = 1))

#其他分割方式,与第一种一致
print(np.vsplit(a , 3)) #vertical split
print(np.hsplit(a , 2)) #horizon split

 

numpy 复制

import numpy as np

#对于numpy的赋值,“ = ”符号就相当于对地址修改,一改全改。
a = np.arange(4)
print(a)

d = a
d[0] = 11
print(a)

# 利用copy得到的数据将不会有关联性。
d = a.copy()
d[0] = 22
print(a)
相关标签: 机器学习竞赛

上一篇:

下一篇: