2020-11-7数据科学包学习第三天笔记Numpy 原创

1308-朱同学

发表文章数:18

首页 » 数据科学库 » 正文

numpy

1. numpy创建数组

import numpy as np
import random

t1 = np.array([1,2,3])
print(type(t1))   #type类型是numpy.ndarray

t2 = np.array(range(10))
t3 = np.arange(12)   #和np.array(range())效果一样
print(t3.dtype) #dtype是int32
t4 = np.array([100,200,300,0,500,600,700,0,9000],dtype = bool)
print(t4)
print(t4.dtype)

t5 = t4.astype("i1")
print(t5)

t6 = np.array([round(random.random(),2) for i in range(10)])
print(t6)

2.数组运算

一个N维数组可以同小于它至少一个维度,但其他维度都相同的数组进行对应项计算。

import numpy as np

t1 = np.array([[1,2,3],[4,5,6]])    #二维数组
print(t1.shape)

t2 = np.array([[[1,2,3],[4,5,6]],[[7,8,9],[10,11,12]]])    #三维数组
print(t2.shape)

t3 = np.arange(12).reshape((3,4))   #3行4列
t4 = np.arange(24).reshape((2,3,4))   #2块3行4列
t5 = np.arange(48).reshape((2,2,3,4))
t6  = t5.flatten()

t7 = t3+2 #所有项都加2
t8 = np.arange(10,14).reshape((1,4))
t9 = np.arange(20,23).reshape((3,1))

print(t3+t8)  #如果行列数相同,对应项相加。或者相同个数的一行或者一列与矩阵相加。
print(t3-t9)

3.numpy读取数据

np.loadtxt(frame,dtype=np.float,delimiter=None,skiprows=0,usecols=None,unpack=False)
frame:文件,字符串或者产生器,可以是gz或者bz2压缩文件
dtype:数据类型,默认np.float
delimiter:分割字符串,默认是任何空格,改为逗号
skiprows:跳过前X行,一般跳过第一行表头
usecols:读取指定的列,索引,元组类型
unpack:True读入属性将分别写入不同数组变量,默认False读入数据值只写入一个数组变量

### numpy矩阵转置三种方法
1.t.T
2.t.transpose()
3.t.swapaxes(1,0)

## numpy数据修改
```python
import numpy as np
import copy
t1 = np.arange(2,26).reshape((4,6))

#数组中数值修改
t2 = copy.deepcopy(t1)
t2[t2<10] = 3       #小于10的值等于3
print(t2)

t3 = copy.deepcopy(t1)   #把一部分数值改成0
t3[:,2:4] = 0
print(t3)

t4 = copy.deepcopy(t1)
t4 = np.where(t4<4,5,9) #相当于 if i<4  i=5 ,else i=9
print(t4)

t5 = copy.deepcopy(t1)
t5 =t5.clip(10,18)  #小于10的替换为10,大于18的替换为18
print(t5)

t5 = t5.astype(float)
t5[2,3] = np.nan
print(t5)

#数组的拼接
np.vstack((t1,t2))  #竖直拼接
np.hstack((t3,t4))  #水平拼接

#数组中行或者列的交换
t1[[1,2],:] = t1[[2,1],:]  #行交换
t1[:,[0,2]] = t1[:,[2,0]]  #列交换

4.numpy数据拼接

import numpy as np
#获取两个国家的数据
us_file_path = "../youtube_video_data/US_video_data_numbers.csv"
uk_file_path = "../youtube_video_data/GB_video_data_numbers.csv"
us_data = np.loadtxt(us_file_path,delimiter=",",dtype="int")
uk_data = np.loadtxt(uk_file_path,delimiter=",",dtype="int")

#创建标识数组
zeros_data = np.zeros((us_data.shape[0],1)).astype(int)
ones_data = np.ones((uk_data.shape[0],1)).astype(int)

#拼接标识数组
us_data = np.hstack((us_data,zeros_data))
uk_data = np.hstack((uk_data,ones_data))

#拼接所有数组
data = np.vstack((us_data,uk_data))
print(data)

5.numpy其他方法

1.np.argmax(t,axis=0) 获取最大值位置
2.np.argmin(t,axis=1) 获取最小值位置
3.np.zeros((3,4)),np.ones((3,4)),np.eyes(10),全0,全1和对角线为1的数组方阵

1.生成随机数

1.rand 随机生成0-1的浮点数
2.randn 创建标准正太分布随机浮点数,平均数0,标准差1
3.randint(low,high,(shape)) 给定范围low,high,形状是shape的随机整数
4.uniform(low,high,(size))均匀分布
5.normal(loc,scale,(size)) 正太分布随机抽取样本,分布中心是loc(概率分布的均值),标准差是scale,形状是size
6.seed(s) 随机种子,s是给定的种子值。相同的随机数种子,可以生成相同的随机数。

2.nan的注意事项

1.通过np.isnan(a)来判断一个数字是否为nan,两个nan是不相等的
2.np.count_nonzero(t!=t)
3.nan和任何值计算都为nan

3.常用统计函数

1.a.sum 求和
2.a.mean 求均值
3.np.median(a) 求中值
4.a.max 最大值
5.a.min最小值
6.np.ptp 极值:最大值和最小值的差
7.a.std标准差

4.例子

import numpy as np
from matplotlib import pyplot as plt

us_file_path = "../youtube_video_data/US_video_data_numbers.csv"
uk_file_path = "../youtube_video_data/GB_video_data_numbers.csv"

us_data = np.loadtxt(us_file_path,delimiter=",",dtype="int")
uk_data = np.loadtxt(uk_file_path,delimiter=",",dtype="int")

us_comments = us_data[:,-1]
uk_comments = uk_data[:,-1]

us_comments = us_comments[us_comments<=5000]
print(us_comments.max(),us_comments.min())

d = 250
bin_nums = (us_comments.max()-us_comments.min())//d

plt.figure(figsize=(20,8),dpi=80)

#plt.xticks(list(range(min(us_comments),max(us_comments)))[::d])
plt.hist(us_data,bin_num)

plt.show()
import numpy as np
from matplotlib import pyplot as plt

uk_file_path = "../youtube_video_data/GB_video_data_numbers.csv"

uk_data = np.loadtxt(uk_file_path,delimiter=",",dtype="int")

uk_data = uk_data[uk_data[:,1]<100000]

uk_comments = uk_data[:,-1]
uk_likes = uk_data[:,1]

plt.figure(figsize=(20,8),dpi=80)

plt.scatter(uk_likes,uk_comments)

plt.show()

未经允许不得转载:作者:1308-朱同学, 转载或复制请以 超链接形式 并注明出处 拜师资源博客
原文地址:《2020-11-7数据科学包学习第三天笔记Numpy 原创》 发布于2020-11-07

分享到:
赞(0) 打赏

评论 抢沙发

评论前必须登录!

  注册



长按图片转发给朋友

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

Vieu3.3主题
专业打造轻量级个人企业风格博客主题!专注于前端开发,全站响应式布局自适应模板。

登录

忘记密码 ?

您也可以使用第三方帐号快捷登录

Q Q 登 录
微 博 登 录