一、创建
import numpy as np

t1 = np.array([1, 2, 3], dtype=float)
print(type(t1), t1, t1.dtype)
t2 = np.arange(4, dtype="int")
print(type(t2), t2, t2.dtype)
t3 = np.arange(10, 20).reshape(2,5)
print(type(t3), "\n", t3, t3.shape)

numpy简单笔记_数据

二、读取CSV文件

loadtxt原型:

np.loadtxt(frame, dtype=np.float, delimiter=None, skiprows=0, usecols=None, unpack=False)

其中:frame表示csv文件路径,dtype表示读取出来数据的类型,delimiter表示分割字符,skiprows表示跳过前多少行,usecols表示读取哪几行数据,unpack表示是否转置

= "./data.csv"
t4 = np.loadtxt(data_path, delimiter=",", dtype=int, unpack=True)
t5 = np.loadtxt(data_path, delimiter=",", dtype=int)
print(t4)
print("t4形状:", t4.shape)
print(t5)
print("t5形状:", t5.shape)

numpy简单笔记_转置_02

三、转置

返回转置结果,但是原数据不变

print(t4.transpose())  # 转置t4
print(t4.T) # 转置t4
print(t4.swapaxes(1,0)) # 交换轴,0轴和1轴

四、查看最大、最小值的索引

0轴表示纵轴,1轴表示横轴

print(t4)
print("0轴最大值所在位置", np.argmax(t4, axis=0)) # 查看指定轴最大值的索引
print("1轴最小值所在位置", np.argmin(t4, axis=1)) # 查看指定轴最小大值的索引

numpy简单笔记_数据_03

五、随机操作

# 创建3行3列的矩阵,np.random.rand(3,3,3,3),几个数字表示几维
print(np.random.rand(3,3))
# 创建3行3列的满足正太分布的矩阵,np.random.randn(3,3,3,3),几个数字表示几维
print(np.random.randn(3,3))
# 产生指定形状,指定范围的矩阵
print(np.random.randint(3, 10, (3,4)))
# np.uniform(begin, end, (size,)) 产生指定大小的,满足均匀分布的数组
print(np.random.uniform(3, 10, (4,5)))
# 随机种子
np.random.seed(1000)
print(np.random.randint(3,10,(3,4))) # 每次执行的结果都相同

六、基本的算数操作

= np.arange(24).reshape(6,4).astype(float)
t1[3:6,1:3] = np.nan # 将3-5行,1-2列置为nan
print(t1)
print(np.count_nonzero(t1)) # 返回t1中不为0的元素个数
print(np.isnan(t1)) # np.count_nonzero(t1 != t1)
print(np.sum(t1, axis=0)) # 计算0轴的和
print(t1.sum(axis=0)) # 计算0轴的和
print(t1.mean(axis=0)) # 计算0轴的均值
print(np.median(t1, axis=0)) # 计算0轴的中值
print(t1.max(axis=0))
print(t1.min(axis=0))
print(np.ptp(t1, axis=0)) # 计算极差
print(t1.std(axis=0)) # 计算0轴的标准差,axis为可选参数

七、切片和索引
= np.arange(24).reshape(6,4).astype(float)
print(t1)
print(t1[::2]) # 按照步长,从前往后取
print(t1[[0, 3, 4]]) # 取不连续的多行
print(t1[[1, 3, 4],:]) # 取指定行所有列
print(t1[2:, :]) # 用逗号将取行和取列的操作分开,取从第二行开始的所有行
print(t1[:, 0]) # 取所有行的第0列
print(t1[2:, 1]) # 从第2行往后的第1列
print(t1[:, 2:]) # 取第2列往后的所有行
print(t1[:, [0, 1, 3]]) # 取0,1,3列的所有行
print(t1[2:5, 1:4]) # 取2-4行,1-3列的值
print(t1[[0, 5], [1, 2]]) # 取出t1[0][1],t1[5][2]

# 上一行只能取出两个元素,而我们向取出0行5行和1行2行相交的4个元素需要如下两步
temp = t1[[0, 5], :] # 取出0行5行所有元素
temp = temp[:,[1, 2]] # 从0行和5行组成的矩阵中取出1、2行
print(temp)

t2 = t1 < 10 # bool索引,t1中小于10的全返回True,大于10的全为False
t1[t1 < 10] = 100 # t1中小于10的全部赋值成100
print(np.where(t1 < 10, 0, 100)) # t1中小于10的替换成0,否则替换成100
print(t1.clip(10, 20)) # 小于10的替换成10, 大于20的替换为20
八、连接操作

[[1, 2, 5], :] = np.nan
t2 = np.arange(24, 48).reshape(6, 4)
print(np.vstack((t1, t2))) # 纵向连接,两个(6,4)的变成一个(12,4)的
print(np.hstack((t1, t2))) # 横向连接,两个(6,4)的变成一个(6,8)的
t1[[1, 2], :] = t1[[2, 1], :] # 交换1,2行

九、创建全0和全1矩阵
# 全0矩阵
zeros_data = np.zeros((2, 3)).astype(int)
# 全1矩阵
ones_data = np.ones((4, 2)).astype(int)
# 对角线全1的3维方阵
tri_ones = np.eye(3).astype(int)