数组

本文详细介绍了使用Python的NumPy库进行数组操作的方法,包括数组创建、数据类型管理、索引切片、数学运算及数组拼接等核心功能,并通过实例展示了如何高效地处理和分析数据。

思维导图:

基本操作

import numpy as np

# 一维数组
t1 = np.arange(12)
print(t1.shape)

# 二维数组
t2 = np.array([[1,2,3,4],[5,6,7,8]])
print(t2.shape)

# 改变数组维数
print(t1.reshape(3,4))  # 一维变二维
print(t2.reshape(8,))   # 二维变一维

# 将多维数组展开
print(t2.flatten())
print(t2)


# 数组的计算
# 数组和数字计算
print(t2+2) # 将计算过程应用于数组内的每一个数据
print(t2/2)
print(t2/0)

# 数组和数组计算,若形状一样,对应位置进行计算
t3 = np.arange(100,108).reshape((2,4))
print(t3)
print(t3*t2)
print(t3+t2)

# 两个数组维度不同时,行相同按行计算,列相同按列计算
# 两个数组维度不同且行列都不相同,无法进行计算
# 如果是三维和二维数组的话,只要三维的后两个和二维相同就可以计算

再来一波基本操作

import numpy as np
import random

# 生成数组
t1 = np.array([1,2,3])
print(t1)
print(type(t1))

t2 = np.array(range(10))
print(t2)

t3 = np.arange(0,10,2)
print(t3)

# 查看数组内元素的类型
print(t3.dtype)

# 手动指定数组内元素类型
t4 = np.array(range(1,4),dtype=float)
print(t4)
print(t4.dtype)

# numpy中的bool类型
t5 = np.array([1,1,0,1,0,2],dtype=bool)
print(t5)

# 调整数据类型
t6 = t5.astype("int8")
print(t6)
print(t6.dtype)

# numpy中的小数
t7 = np.array([random.random() for i in range(10)])
print(t7)
print(t7.dtype)

# 修改小数位数
t8 = np.round(t7,2)
print(t8)

 从文件中读取数据

import numpy as np

us_file_path = './you.csv'
uk_file_path = './to.csv'

t1 = np.loadtxt(us_file_path,delimiter=',',dtype='int',unpack=True)  # 按逗号分隔,按int类型读取,行列对调

print(t1)

 numpy索引切片

import numpy as np

t1 = np.arange(12).reshape((3,4))
print(t1)
print('*'*100)
# 取行
print(t1[2])
print('*'*100)
print(t1[1:])

# 取不连续的多行
print('*'*100)
print(t1[[0,2]])    # 两个[]

# 取列
print('$'*100)
print(t1[:,1])
# 取连续的多列
print(t1[:,0:2])

# 取不连续的多列
print(t1[:,[0,2]])

# 取行和列的值,如取第3行和第4列
print(t1[2,3])

# 取多行和多列,取第1行到底3行,第1列到第3列
# 取的是行和列交叉点的位置
print(t1[0:2,0:2])

# 取多个不相邻的点
# 取的是(0,0),(2,1),(2,3)
print('#'*100)
c = t1[[0,2,2],[0,1,3]]
print(c)

 赋值

import numpy as np

t1 = np.arange(12).reshape((3,4))

print(t1)

print('*'*100)

# 将t1中大于0的变成88
t1[t1>8]=88
print(t1)

# 判断式,将小于等于8的替换成100,其余的替换成300
print(np.where(t1<=8,100,300))

# 剪裁clip,小于5的替换成5,大于7的替换成7
print(t1.clip(5,7))

print(t1)

# 将其中数字转化成nan
t1 = t1.astype(float)
t1[2,2] = np.nan
print(t1)

 数组拼接

import numpy as np

us = './yihao'
uk = './erhao'

# 加载国家数据
us_data = np.loadtxt(us,delimiter=',',dtype=int)
uk_data = np.loadtxt(uk,delimiter=',',dtype=int)

# 添加国家信息
# 构造全为0,1的数据
zeros_data = np.zeros((us_data.shape[0],1)).astype(int)
ones_data = np.ones((uk_data.shape[0],1)).astype(int)

# 分别添加一列全为0,1的数组
us_data = np.hstack((us_data,zeros_data))
uk_data = np.hstack((uk_data,ones_data))

# 拼接两组数据
final_data = np.vstack(us_data,uk_data)
print(final_data)

 

转载于:https://www.cnblogs.com/Mr-Feng/p/11213702.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值