ADD file via upload

master
hnu202110040108 3 years ago
parent b41799c3aa
commit 3f3e1fe8da

@ -0,0 +1,194 @@
# -*- coding: utf-8 -*-
"""
Created on Wed Dec 22 13:11:41 2021
@author: hzh
"""
import numpy as np # 导入numpy库
import pandas as pd
from pandas import DataFrame
# 创建ndarray数组
# 一维数组
data1 = [6, 7.5, 8, 0, 1] # 列表
arr1 = np.array(data1)
print(arr1.ndim)
arr2 = np.array((5.6, 6.7, 7.8, 8.9, 9.)) # 元组
print(arr2)
# pandas series
print('pandas series')
df1 = pd.Series(data1)
print(df1)
print(df1.values)
print((df1.values).ndim)
df2 = df1.values.reshape(1, -1)
print(df2)
print(df2.ndim)
print(df2[0])
print(df2[0, 0])
# print(df1.values.reshape(1,-1))
# 二维numpy数组
import numpy as np
data1 = [[6, 7.5, 8, 0, 1], [3.2, 3, 7, 52, 23.4]]
arr1 = np.array(data1)
print(arr1)
print(arr1.shape, arr1.ndim, arr1.dtype, arr1.size)
# pandas DataFrame
print('pandas DataFrame')
arr2 = pd.DataFrame(data1)
print(arr2.values)
print(arr2.shape, arr2.ndim, arr2.size)
print(arr2[0]) # 显示0列数据
print(arr2.loc[0]) # 显示0行数据
print(arr2.iloc[0, 0]) # 显示0行0列数据
# reshape(),astype()
import numpy as np
arr1 = np.array([1, 2, 3, 4, 5, 6]) # 6个元素的一维数组
arr1 = arr1.reshape(2, 3) # 改变为2行3列的二维数组
print(arr1)
arr2 = arr1.astype(str) # 转换成字符型
print(arr2)
# 自动创建数组1
print(np.ones(6))
print(np.zeros(6).reshape(2, 3))
print(np.arange(2, 10, 2))
print(np.linspace(2, 13, 12))
# 创建随机数组
np.random.seed(100)
# 生成2行3列的随机数数组值在[0,1)之间
n1 = np.random.rand(2, 3)
print(n1)
# 生成2行3列的随机数数组值为正态分布的随机样本数
n2 = np.random.randn(2, 3)
print(n2)
# 生成包含10个元素的值在[0,100) 的数组
n3 = np.random.randint(0, 100, 10)
print(n3)
# 生成2*3维的值在[0,100) 的数组
n4 = np.random.randint(0, 100, (2, 3))
print(n4)
# 通过文件读取保存数组
import numpy as np
arr1 = np.arange(10)
np.savetxt('2.txt', arr1, fmt='%0.4f', delimiter=',')
arr2 = np.loadtxt('2.txt')
print(arr2)
# 访问数组元素
# 用下标访问元素1
x = np.array([1, 2, 3, 4, 5, 6])
print(x[4]) # 一维数组访问第4个元素从0开始计数
x = np.array([[1, 2, 3], [4, 5, 6]])
print(x[1]) # 二维数组访问第1行数据从0开始计数
# 列表切片2
arr = np.arange(10)
print(arr)
print(arr[5: 8])
arr[5: 8] = 12 # 值的广播
print(arr)
# 数组的切片不是一个新的数组,是数组的一个视图
arr = np.arange(10)
arr_slice = arr[5:8] # 获得一个视图而不是新的数组
arr_slice[1] = 32
print(arr)
# 通过切片获得新数组的方法copy()
arr = np.arange(10)
arr_slice = arr[5:8].copy()
arr_slice[1] = 32
print(arr)
# 访问高维数组元素, 切片不改变维度
arr1d = np.array([[1, 2, 3], [4, 5, 6]])
print(arr1d)
print(arr1d[1, 2]) # 等价于print(arr1d[1][2])
print(arr1d[1]) # 数组子集(也是视图)
print()
arr2d = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(arr2d)
print(arr2d[:2]) # 在轴0上切片
print(arr2d[:2, 1:]) # 在轴0和轴1上切片
print()
arr3d = np.array([[1, 2, 3], [4, 5, 6]])
print(arr3d[1, :2]) # 轴0选第一行然后在轴1上切片
print(arr3d[:, 1]) # 轴0全选然后选取第1列
# print(arr3d)
# 列表索引(花式索引)获得的是新数组,不是视图
import numpy as np
arr2d = np.linspace(1, 100, 12).reshape(4, 3)
print(arr2d)
print(arr2d[[2, 0, 1]]) # 依次选取轴0的2,0,1行
print(arr2d[:, [2, 0]]) # 依次选取轴1的2,0列
# print(arr2d)
# 布尔索引
arr2d = np.array([[1, -2, 3], [-4, 5, 6]])
print(arr2d)
print(arr2d < 0) # arr2d<0 是个布尔型数组
print(arr2d[arr2d < 0]) # 用布尔型数组来索引
arr2d[arr2d < 0] = 0 # 赋值
print(arr2d)
# numpy的基本运算标量向量和矩阵
# 广播运算
data1 = [[6, 7.5, 8, 0, 1], [3.2, 3, 7, 52, 23.4]]
arr1 = np.array(data1)
arr1 = arr1 * 2 # 这是广播运算
print(arr1)
# print(1/arr1)
# print(arr1**0.5)
# 标量运算
print(np.sum([1, 2, 3, 4]))
print(np.sqrt(100))
print(np.abs(-10))
# 向量运算
lst = [[6, 7.5, 8, 0, 1], [3.2, 3, 7, 52, 23.4]]
arr2d = np.array(lst)
print(arr2d)
print(np.sum(arr2d))
print(np.min(arr2d, axis=1)) # 求每一行中的最小值,向量
print('*' * 20)
np.mean(arr2d, axis=0) # 求每一列的平均值,向量
# 矩阵运算函数diag(),dot(),trace(),det()....
import numpy as np
A = np.array([[m + n for m in np.arange(4)] for n in np.arange(4)]) # 4 x 4 2D arrays
B = np.array([[m - n for m in np.arange(3)] for n in np.arange(4)]) # 4 x 3 2D arrays
C = np.arange(4) # 1D vector with a size of 4
# A, B, C
print(A)
print(B)
print(C)
print(A.shape)
print(B.shape)
print(C.shape)
# 计算矩阵相乘
print(np.dot(A, B), '\n')
print(np.dot(A, C))
print(np.dot(C, A)) # 数学上的矩阵相乘
""" 练一练:
1用arange()生成一个0-20以内5行4列的A数组
2将A数组元素保存在arr1.txt文件中保存格式为%4d,以逗号作为分隔符
3访问A数组输出数组的0行最后一个元素
4访问A数组分别输出数组的第23行的数据第34列的数据
5访问A数组分别输出数组的轴0方向全选轴1方向输出第23列元素
6访问A数组输出行选取第一行和最后一行列选取032列显示
7将A数组中所有的奇数变成其平方数输出
8求出所有数据每一行和每一列的平均值并输出
"""
Loading…
Cancel
Save