本文仅记录了一些自己会使用到的知识,若没有帮到您,我感到很抱歉!
t1 = np.array([1, 2, 3]) # [1 2 3]
t2 = np.array(range(1, 5), dtype="float") # 指定声明float型数据:[1. 2. 3. 4.]
t3 = np.arange(1, 5) # [1 2 3 4]
a = [1, 3, 5]
b = [2, 4, 6, 7]
(1)+
print(a+b)
(2)extend
a.extend(b)
print(a)
(3)列表表达式
c = [a, b]
d = [i for _c in c for i in _c]
print(d)
t1 = np.array(range(1, 5), dtype="float") # 指定声明float型数据:[1. 2. 3. 4.]
print(type(t1)) # t1本身的数据类型:
print(t1.dtype) # t1中所存放数据的数据类型:float64
t2 = t1.astype("int") # 调整数据类型为int:[1 2 3 4]
t1 = np.arange(12) # 声明一维数组:(12, )
t2 = t1.reshape(3, 4) # 转变成二维数组:(1, 4)
t3 = t1.reshape(2, 2, 3) # 转变成三维数组:(2, 2, 3)
t4 = t3.flatten() # 返回一个折叠成一维的数组,但是该函数只能适用于numpy对象
t1 = np.array([random.randint(1, 10) for i in range(12)]).reshape(3, 4)
t2 = t1 + 2 # 数组中的每个元素均会加2
(1)两个数组形状相同
t1 = np.array([random.randint(1, 10) for i in range(12)]).reshape(3, 4)
t2 = np.array([random.randint(1, 10) for i in range(12)]).reshape(3, 4)
t3 = t1 * t2
注:形状相同时,对应位置元素直接进行计算,对二维、三维数组均适用
(2)两个数组形状不同
# 二维数组
t1 = np.array([random.randint(1, 10) for i in range(12)]).reshape(2,6) # 生成12个随机数,形状改为2 * 6
t2 = np.array([random.randint(1, 10) for i in range(2)]).reshape(2, 1) # 生成2个随机数,形状为 2 * 1
t3 = np.array([random.randint(1, 10) for i in range(6)]) # 生成6个随机数
t4 = t1 + t2 # 列方向上的元素个数均为2,故可进行计算
t5 = t1 * t3 # 行方向上的元素个数均为6,故可进行计算
#三维数组---借助立体图思考 x = [0, 2], y = [0, 3], z = [0, 4]
t1 = np.array([random.randint(1, 10) for i in range(24)]).reshape(2, 3, 4)
t2 = np.array([random.randint(1, 10) for i in range(8)]).reshape(2, 1, 4)
t3 = np.array([random.randint(1, 10) for i in range(12)]).reshape(3, 4) # 也可以写成(1, 3, 4)
t4 = np.array([random.randint(1, 10) for i in range(6)]).reshape(2, 3, 1)
t5 = t1 + t2 # 往y方向看,形状为2 * 4,此时y = 1方可进行计算
t6 = t1 * t3 # 往x方向看,形状为3 * 4,此时x = 1方可进行计算
t7 = t1 - t4 # 往z方向看,形状为2 * 3,此时z = 1方可进行计算
file_path = "./data.csv"
data = np.loadtxt(file_path, delimiter=",", dtype="int")
data1[[1, 3], :] = data1[[3, 1], :] # 交换1,3两行
data1[:, [1, 3]] = data1[:, [3, 1]] # 交换1,3两列
print(np.vstack((data1, data2))) # 竖直拼接
print(np.hstack((data1, data2))) # 水平拼接
注:竖直(水平)拼接须保持两个数组列(行)数一致
(1)取行
print(data[2]) # 取某一行
print(data[1:3]) # 取连续多行
print(data[[2, 8, 10]]) # 取不连续的多行
(2)取列
print(data[:, 1]) # 取某一列
print(data[:,1:3]) # 取连续的多列
print(data[:, [1, 3]]) # 取不连续的多列
(3)取行和列
print(data[2, 3]) # 取一个点:(2, 3)
print(data[[0, 1], [0, 2]]) # 取不相邻的多个点:(0, 0)和(1, 2)
print(data[2:5, [0, 2]]) # 取2行到4行,0列和2列的元素
data[:, [1, 3]] = 0 # 给(行)列中所有元素赋值
data[data < 10] = 3 # 将数值小于10的值改为3
print(np.where(data < 10, 3, 20)) # 将数值小于10的改为3,反之改为20
print(data.clip(10, 18)) # 将数值小于10的替换为10, 大于18的替换为18
print(data.sum(axis=0)) # 求和
print(data.mean(axis=0)) # 求均值
print(np.median(data, axis=0)) # 中值
print(data.max(axis=0)) # 最大值
print(data.min(axis=0)) # 最小值
print(np.ptp(data, axis=0)) # 极差:最大值-最小值
print(data.std(axis=0)) # 标准差
注:axis=0:指按0轴方向,对每列数据进行计算;axis=1则对每行数据进行计算
# 保留有效数字
t1 = [random.random() for i in range(10)] # 随机生成10个[0,1]之间的小数
t2 = np.round(t1, 2) # 将t1中的数据保留两位小数