机器学习之numpy入门
numpy基本使用
numpy创建数组方式
# coding = utf-8
import random
import numpy as np
# array方式传入数据
t1 = np.array(range(0, 12))
print(t1)
print(t1.dtype)
print(type(t1))
# np.arange方式
t2 = np.arange(0, 12)
print(t2)
print(t2.dtype)
print(type(t2))
# 改变np的dtpye
t3 = t2.astype("float")
print(t3.dtype)
# 取小数位数
t4 = np.array([random.random() for i in range(10) ])
print(t4)
print(t4.round(3))
numpy读取本地文件
# numpy 读取本地文件
# 文件路径、读取类型、分隔符、跳过开头多少行,,unpack默认为False,为True为转置矩阵
file = np.loadtxt("E://a.csv",dtype="int64",delimiter=",",skiprows=1,usecols=None,unpack=False)
numpy的转置
t1 = np.arange(0, 12).reshape(3, 4)
print(t1.T)
print(t1.transpose())
print(t1.swapaxes(1,0))
numpy取行取列取值
# 取行
print(file1[1])
print(file1[1,:])
print(file1[0:])
print(file1[0:,:])
print(file1[1:])
print(file1[1:,:])
print(file1[[1,2]])
print(file1[[1,2],:])
# 取列
print(file1[:,1])
print(file1[:,1:])
print(file1[:,[0,2]])
# 取值
print(file1[3,4])
print(file1[4,5])
numpy修改值
直接赋值即可
numpy拼接
t1 = np.arange(0, 12).reshape(2, 6)
print(t1)
print("-----------------")
t2 = np.arange(5, 17).reshape(2, 6)
print(t2)
print("-----------------")
# 径直拼接
print(np.vstack((t1,t2)))
print("-----------------")
# 水平拼接
print(np.hstack((t1,t2)))
numpy交换行列
t1 = np.arange(0, 12).reshape(3, 4)
print(t1)
print("--------")
# 交换行,第一行和第二行交换
t1[[1,2],:]=t1[[2,1],:]
# 交换列,第一列和第二列交换
t1[:,[1,2]]=t1[:,[2,1]]
print(t1)
创建全0 或者全1或者对角矩阵
zeros = np.zeros((3, 4))
print(zeros)
ones = np.ones((3, 3))
print(ones)
eye = np.eye(3)
print(eye)
ran = np.random.randint(10,20,(3,4),dtype=int)
print(ran)
a=b完全不复制,a和b互相影响
a=b[:]视图操作,会创建新的对象a,但是a的数据完全由b保管,他们两个的数据变化是一致的
a=b.copy()完全赋值, a和b互不影响
nan表示不是一个数字
inf表示正无穷
-inf 表示负无穷
np.nan == np.nan 为false
nan判断
ones = np.ones((3, 3))
ones[2,2]=np.nan
print(ones)
nonzero = np.count_nonzero(ones!=ones)
print(nonzero)
isnan = np.isnan(ones)
print(isnan)
nan和任何值相计算都是nan
np.sum中若有nan很多时候并不是简单将其替换为0,而是替换成均值或者中值
t.mean(axis=0)某一行的均值
np.median(t)中值