数组的轴
- 一维数组,只有一个0轴
- 二维数组有0轴和1轴,0轴 表示行,1轴表示列
- 三维数组有0,1,2轴,0轴表示块,1轴表示行,2轴表示列
numpy读取数据
- np.loadtxt()
fname:文件、字符串或压缩包
dtype:元素数据类型(可选),默认np.float
delimiter:分隔符,默认为空格
skiprows:跳过前x行,一般用于跳过第一行表头
usecols:读取指定列,传入参数为索引/元组
unpack:当传入True,将数据的行列进行转至;默认为False
'''
现在这里有一个英国和美国各自youtube1000多个视频的点击,喜欢,不喜欢,评论数量(["views","likes","dislikes","comment_total"])的csv
'''
import numpy as np
uk_csv = './youtube_video_data/GB_video_data_numbers.csv'
us_csv = './youtube_video_data/US_video_data_numbers.csv'
us_table = np.loadtxt(us_csv, delimiter=',', dtype='int')
# us_table = np.loadtxt(us_csv, delimiter=',', unpack=True) # unpack=True时行列转至
print(us_table)
# print(us_table)
numpy的转至
- 变量.swapaxes(1,0):交换0轴和1轴,实现转至
- 变量.transpose()
- 变量.T
numpy的切片与索引
- 取行
print(us_table[2])
print(us_table[2::2]) # 从第三行开始,隔两行取行
print(us_table[[2, 6, 8]]) # 指定取不连续的行
- 取列(行列之间用逗号分隔)
print(us_table[[2, 6, 8], 3]) # 取第四列
print(us_table[[2, 6, 8], 1:]) # 取第二列后的所有行
print(us_table[:, [1, 3]]) # 取第二列和第四列
- 取点
a = us_table[2, 3] # 取单个数据
b = us_table[2:5, 1:4] # 取相邻的点,索引包头不包尾
c = us_table[[0, 2, 2], [0, 1, 3]] # 取不相邻的点,(0,0)、(2,1)、(2,3)处的三个点
numpy数值的修改
切片取值后直接赋值新数据
- 布尔索引取数修改
t = np.arange(24).reshape(4, 6)
print(t < 10) # 返回一个布尔数组
t[t < 10] = 10 # 索引取数,对小于10的元素直接赋值修改
- 三元运算符生成一个修改后的新对象
t1=np.where(t < 16, 0, 16) # 类似于三元运算符,当t<16为True时赋值0,为False是赋值16;三元运算符,3 if 3>2 else 4,为真返回3为假返回4
- 裁剪生成一个修改后的新对象
t2=t.clip(15,20) # 将t中小于10的数替换成10,大于20的数替换成20