# -*- coding: utf-8 -*-

# @File    : numpy_readfile_demo.py
# @Date    :  2019-12-30 17:12
# @Author  : admin
import numpy as np
'''
1.delimiter 指定分隔符，不然每一行的数据合并成了一行数据，而会报错
2.dtype   默认情况下，对较大的数字实行科学计数法
3.unpack: 默认情况下，值为false，有多少行就显示多少行，当值为True，通过将每一列转成每一行进行显示，有多少列，就有多少行，相当于转置
'''
print("###########################################1.加载数据#################################")
us_file_path = "./US_video_data_numbers.csv"
t1 = np.loadtxt(us_file_path,delimiter=",",dtype="int",unpack=True);
print(t1)
'''
[[4394029 7860119 5845909 ...  142463 2162240  515000]
 [ 320053  185853  576597 ...    4231   41032   34727]
 [   5931   26679   39774 ...     148    1384     195]
 [  46245       0  170708 ...     279    4737    4722]]

'''
t2 = np.loadtxt(us_file_path,delimiter=",",dtype="int",unpack=False);
print(t2)
'''
[[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  320053    5931   46245]
 [7860119  185853   26679       0]
 [5845909  576597   39774  170708]
 ...
 [ 142463    4231     148     279]
 [2162240   41032    1384    4737]
 [ 515000   34727     195    4722]]
'''
#转置
t3=t2.transpose()
print(t3)
print("######################################2.按行获取数据######################################")
#取行
print(t2[2])
#取连续的多行
print(t2[2:])
#取不连续的多行
print(t2[[2,8,10]])
print("======另一种方式，逗号前面是行，逗号后面是列")
#第一行的所有列
print(t2[1,:])
#第二行的所有列
print(t2[2:,:])
print("*******")
#第2,10,3，行的所有列
print(t2[[2,10,3],:])
print("######################################3.按列获取数据######################################")
#取列
print(t2[:,0])
#取连续的多列
print(t2[:,2:]);
#取不连续的多列,第0列，第2列
print(t2[:,[0,2]])
#取行和列，取第3行，第四列的值
a = t2[2,3]
print(a)
print(type(a))
#取多行和多列，取第3行到第五行，第2列到第4列的结果
#取的是行和列交叉点的位置
b = t2[2:5,1:4]
print(b)
#取多个不相邻的点
#选出来的结果是（0，0） （2，1） （2，3）
c = t2[[0,2,2],[0,1,3]]
print(c)
'''
[4394029  576597  170708]
'''
a=t2[1,3]
a=23;
#t2[1,3]=23
print(t2[1,:])
print("######################################4.模糊查询并赋值######################################")
#将元素大于10的替换成1，使用到了bool索引
print(t2>10)
t2[t2>10]=1;
print(t2)
#如果元素为0替换成1，否则替换成0
print("******",type(t2))
c=np.where(t2==0,1,0);
print(c)
