# 机器学习-数据科学库-day3

numpy学习

## numpy创建数组(矩阵)

### 练习


import numpy as np
import random

t1=np.array([1,2,3,4,5])
print(t1)
print(type(t1))

t2=np.array(range(10))
print(t2)
print(type(t2))

t3=np.arange(1,10,2)
print(t3)
print(type(t3))
print(t3.dtype)
print("*"*20)

t4=np.array(range(1,4),dtype="f8")
print(t4)
print(t4.dtype)

t5=np.array([1,1,0,0,1,0,1],dtype=bool)
print(t5)
print(t5.dtype)

t6=t5.astype("int8")
print(t6)
print(t6.dtype)

t7=np.array([random.random() for i in range(10)])
print(t7)
print(t7.dtype)

t8=np.round(t7,2)
print(t8)
print(t8.dtype)

print(np.arange(0,10).reshape(2,5))


C:\ANACONDA\python.exe C:/Users/Lenovo/PycharmProjects/Code/day02/page58.py
[1 2 3 4 5]
<class 'numpy.ndarray'>
[0 1 2 3 4 5 6 7 8 9]
<class 'numpy.ndarray'>
[1 3 5 7 9]
<class 'numpy.ndarray'>
int32
********************
[1. 2. 3.]
float64
[ True  True False False  True False  True]
bool
[1 1 0 0 1 0 1]
int8
[0.53470254 0.68531382 0.08348858 0.55545799 0.21017324 0.92818368
0.20948581 0.89012421 0.35591318 0.06539644]
float64
[0.53 0.69 0.08 0.56 0.21 0.93 0.21 0.89 0.36 0.07]
float64
[[0 1 2 3 4]
[5 6 7 8 9]]

Process finished with exit code 0


## 数组的切片

### numpy读取数据

CSV:Comma-Separated Value,逗号分隔值文件

### ; numpy读取和存储数据

import numpy as np

print(t1)
print("*"*100)
print(t2)



C:\ANACONDA\python.exe C:/Users/Lenovo/PycharmProjects/Code/day03/page74.py
[[4394029  320053    5931   46245]
[7860119  185853   26679       0]
[5845909  576597   39774  170708]
...

[ 142463    4231     148     279]
[2162240   41032    1384    4737]
[ 515000   34727     195    4722]]
****************************************************************************************************
[[4394029 7860119 5845909 ...  142463 2162240  515000]
[ 320053  185853  576597 ...    4231   41032   34727]
[   5931   26679   39774 ...     148    1384     195]
[  46245       0  170708 ...     279    4737    4722]]

Process finished with exit code 0



### numpy中的转置

.transpose, .T, .swapaxes(1,0)


import numpy as np

t2=np.arange(24).reshape(4,6)

t3=t2.transpose()
t4=t2.T
t5=t2.swapaxes(1,0)

print(t2)
print("*"*100)
print(t3)
print("*"*100)
print(t4)
print("*"*100)
print(t5)


C:\ANACONDA\python.exe C:/Users/Lenovo/PycharmProjects/Code/day03/test-transpose.py
[[ 0  1  2  3  4  5]
[ 6  7  8  9 10 11]
[12 13 14 15 16 17]
[18 19 20 21 22 23]]
****************************************************************************************************
[[ 0  6 12 18]
[ 1  7 13 19]
[ 2  8 14 20]
[ 3  9 15 21]
[ 4 10 16 22]
[ 5 11 17 23]]
****************************************************************************************************
[[ 0  6 12 18]
[ 1  7 13 19]
[ 2  8 14 20]
[ 3  9 15 21]
[ 4 10 16 22]
[ 5 11 17 23]]
****************************************************************************************************
[[ 0  6 12 18]
[ 1  7 13 19]
[ 2  8 14 20]
[ 3  9 15 21]
[ 4 10 16 22]
[ 5 11 17 23]]

Process finished with exit code 0


### numpy中的clip(裁剪)

#### ; 练习


t1=np.arange(44).reshape(11,4)
print(t1[2])
print("*"*100)

print(t1[2:])
print("*"*100)

print(t1[[2,8,10]])
print("*"*100)

print(t1[:,1])

print(t1[:,2:])

print(t1[:,[0,2]])

a= t1[2,3]
print(a)
print(type(a))

b=t1[2:5,1:4]
print(b)
print(type(b))

c=t1[[0,2,2],[0,1,3]]
print(c)

t8=np.arange(24).reshape(4,6)
print(t8)
print(t8<10)
t8[t8<10]=0
print(t8)

print(np.where(t80,100,300))



C:\ANACONDA\python.exe C:/Users/Lenovo/PycharmProjects/Code/day03/page74.py
[ 8  9 10 11]
****************************************************************************************************
[[ 8  9 10 11]
[12 13 14 15]
[16 17 18 19]
[20 21 22 23]
[24 25 26 27]
[28 29 30 31]
[32 33 34 35]
[36 37 38 39]
[40 41 42 43]]
****************************************************************************************************
[[ 8  9 10 11]
[32 33 34 35]
[40 41 42 43]]
****************************************************************************************************
[ 1  5  9 13 17 21 25 29 33 37 41]
[[ 2  3]
[ 6  7]
[10 11]
[14 15]
[18 19]
[22 23]
[26 27]
[30 31]
[34 35]
[38 39]
[42 43]]
[[ 0  2]
[ 4  6]
[ 8 10]
[12 14]
[16 18]
[20 22]
[24 26]
[28 30]
[32 34]
[36 38]
[40 42]]
11
<class 'numpy.int32'>
[[ 9 10 11]
[13 14 15]
[17 18 19]]
<class 'numpy.ndarray'>
[ 0  9 11]
[[ 0  1  2  3  4  5]
[ 6  7  8  9 10 11]
[12 13 14 15 16 17]
[18 19 20 21 22 23]]
[[ True  True  True  True  True  True]
[ True  True  True  True False False]
[False False False False False False]
[False False False False False False]]
[[ 0  0  0  0  0  0]
[ 0  0  0  0 10 11]
[12 13 14 15 16 17]
[18 19 20 21 22 23]]
[[100 100 100 100 100 100]
[100 100 100 100 300 300]
[300 300 300 300 300 300]
[300 300 300 300 300 300]]

Process finished with exit code 0



### numpy中的nan和inf

nan(NAN,Nan):not a number表示不是一个数字

inf(-inf,inf):infinity,inf表示正无穷，-inf表示负无穷

### ; ndarry缺失值填充均值


import numpy as np

def fill_ndarray(t1):

for i in range(t1.shape[1]):
temp_col=t1[:,i]
nan_num=np.count_nonzero(temp_col!=temp_col)
if nan_num!=0:

temp_not_nan_col=temp_col[temp_col==temp_col]

temp_col[np.isnan(temp_col)]=temp_not_nan_col.mean()

return t1

if __name__=="__main__":
t1 = np.arange(12).reshape(3, 4).astype("float")

t1[1, 2:] = np.nan
print(t1)
fill_ndarray(t1)
print(t1)


C:\ANACONDA\python.exe C:/Users/Lenovo/PycharmProjects/Code/day03/page87.py
[[ 0.  1.  2.  3.]
[ 4.  5. nan nan]
[ 8.  9. 10. 11.]]
[[ 0.  1.  2.  3.]
[ 4.  5.  6.  7.]
[ 8.  9. 10. 11.]]

Process finished with exit code 0



### 动手练习


import numpy as np
from matplotlib import pyplot as plt

t_us_comment=t_us[:,-1]

t_us_comment=t_us_comment[t_us_comment5000]

print(t_us_comment.max(),t_us_comment.min())

d=50

bin_nums = (t_us_comment.max()-t_us_comment.min())//d

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

plt.hist(t_us_comment,bin_nums)

plt.show()

print(t_us_comment)
print(bin_nums)



4995 0
[   0 3040 1071 ...  279 4737 4722]
99




import numpy as np
from matplotlib import pyplot as plt

t_uk=t_uk[t_uk[:,1]500000]

t_uk_comment=t_uk[:,-1]
t_uk_like=t_uk[:,1]

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

plt.scatter(t_uk_like,t_uk_comment)

plt.show()



## 数组的拼接

### 动手练习


import numpy as np
import day03

zero_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,zero_data))
uk_data=np.hstack((uk_data,ones_data))

final_data=np.vstack((us_data,uk_data))
print(final_data)



C:\ANACONDA\python.exe C:/Users/Lenovo/PycharmProjects/Code/day04/page94.py
[[4394029  320053    5931   46245       0]
[7860119  185853   26679       0       0]
[5845909  576597   39774  170708       0]
...

[ 109222    4840      35     212       1]
[ 626223   22962     532    1559       1]
[  99228    1699      23     135       1]]

Process finished with exit code 0



## numpy更多好用的方法

1.获取最大值最小值的位置
np.argmax(t,axis=0)
np.argmin(t,axis=1)
2.创建一个全0的数组: np.zeros((3,4))
3.创建一个全1的数组:np.ones((3,4))
4.创建一个对角线为1的正方形数组(方阵)：np.eye(3)

## numpy生成随机数

### ; 分布的补充

1.均匀分布：在相同的大小范围内的出现概率是等可能的

2.正态分布：呈钟型，两头低，中间高，左右对称

import numpy as np

np.random.seed(6)
t=np.random.randint(0,20,(3,4))
print(t)


[[10  9  3 10]
[13 15 10 16]
[ 1 11 13 15]]



### numpy的注意点copy和view

1. a=b 完全不复制，a和b相互影响
2. a =b[:],视图的操作，一种切片，会创建新的对象a，但是a的数据完全由b保管，他们两个的数据变化是一致的，
3. a =b.copy(),复制，a和b互不影响

## day2 & day3 小结:

Original: https://blog.csdn.net/weixin_47049321/article/details/124185278
Author: weixin_47049321
Title: 机器学习-数据科学库-day3

(0)

### 大家都在看

• #### 联邦学习综述（二）——联邦学习的分类、框架及未来研究方向

注入产生的原理: 数据库设置为GBK编码: 宽字节注入源于程序员设置MySQL连接时错误配置为:set character_set_client=gbk,这样配置会引发编码转换从而…

人工智能 2022年11月30日
0194
• #### 联邦知识蒸馏

注入产生的原理: 数据库设置为GBK编码: 宽字节注入源于程序员设置MySQL连接时错误配置为:set character_set_client=gbk,这样配置会引发编码转换从而…

人工智能 2022年12月7日
0138
• #### Python学习之面向对象编程

面向对象编程 1.类和对象 类与对象是面向编程的两个主要方面。一个类能够创建一种新的类型（Type），对象（Object）就是类的实例（Instance）。 字段（Field）：属…

人工智能 2023年7月9日
025

人工智能 2023年6月10日
028
• #### 什么是卷积神经网络（CNN）

注入产生的原理: 数据库设置为GBK编码: 宽字节注入源于程序员设置MySQL连接时错误配置为:set character_set_client=gbk,这样配置会引发编码转换从而…

人工智能 2023年3月9日
061
• #### 使用pytorch搭建lstm时间序列预测

注入产生的原理: 数据库设置为GBK编码: 宽字节注入源于程序员设置MySQL连接时错误配置为:set character_set_client=gbk,这样配置会引发编码转换从而…

人工智能 2022年12月13日
083
• #### Scanpy(六)空间转录组数据的分析与可视化

注入产生的原理: 数据库设置为GBK编码: 宽字节注入源于程序员设置MySQL连接时错误配置为:set character_set_client=gbk,这样配置会引发编码转换从而…

人工智能 2022年11月21日
0254
• #### Python二手房价格预测（三）——二手房价格预测模型baseline

系列文章目录 一、Python二手房价格预测（一）——数据获取 二、Python二手房价格预测（二）——数据处理及数据可视化 文章目录 系列文章目录 前言 一、数据处理 二、模型训…

人工智能 2023年6月16日
042
• #### 行业洞察 | 未来人形机器可能是最懂你的人

近期，小米展示了全尺寸人形仿生机器人CyberOne。据悉，CyberOne身高177CM、体重52KG，艺名”铁大”，能够感知人类情绪、视觉敏锐、可实现双…

人工智能 2023年6月5日
033
• #### Livox雷达驱动程序发布点云格式CustomMsg、PointCloud2、pcl::PointXYZI、pcl::PointXYZINormal解析

Livox ROS&#x9A71;&#x52A8;&#x7A0B;&#x5E8F;&#x4E13;&#x95E8;&#x75…

人工智能 2023年6月1日
038
• #### labelImg的使用教程，快捷键，用于标注voc或者yolo格式的数据

注入产生的原理: 数据库设置为GBK编码: 宽字节注入源于程序员设置MySQL连接时错误配置为:set character_set_client=gbk,这样配置会引发编码转换从而…

人工智能 2022年8月25日
0169
• #### 搭建nacos集群

安装jdk1.8 jdk为1.8的jdk-8u171-linux-x64.tar.gz版本先去orcle注册下载，上传到服务器1.解压缩 tar -zxvf jdk-8u171-l…

人工智能 2023年6月27日
026
• #### 二类医疗器械的生产许可证要求是什么

注入产生的原理: 数据库设置为GBK编码: 宽字节注入源于程序员设置MySQL连接时错误配置为:set character_set_client=gbk,这样配置会引发编码转换从而…

人工智能 2023年3月15日
0107
• #### 图神经网络（11）— 在知识图谱上推理

目录 预测单跳查询（one-hop queries） 预测路径查询（path queries） Traversing Knowledge Graphs in Vector Spac…

人工智能 2023年7月13日
023
• #### 双重差分法之空间DID

注入产生的原理: 数据库设置为GBK编码: 宽字节注入源于程序员设置MySQL连接时错误配置为:set character_set_client=gbk,这样配置会引发编码转换从而…

人工智能 2022年10月4日
0218
• #### makefile编写问题记录–opencv调用、动态链接库/可执行文件生成、foreach等函数说明、条件判断关键字等

注入产生的原理: 数据库设置为GBK编码: 宽字节注入源于程序员设置MySQL连接时错误配置为:set character_set_client=gbk,这样配置会引发编码转换从而…

人工智能 2022年12月13日
0144