numpy入门2

import numpy as np
t1 = np.arange(200).reshape((10,20))

简单了解下numpy中读取数据的方法
pandas中有更为强大的方法,
一般从csv文件中读取数据

# 从文本文件中读取内容
# fname路径
# dtype数据类型
# delimiter分隔字符串,默认空格. csv中使用,
# skiprows跳过X行,一般跳过第一行表头
# usecols 读取指定的列,索引,元祖类型
# unpack 转置 如果True 读入属性将分别写入不同的数组变量,False读入数据只写入一个数组变量,默认False
np.loadtxt(fname="path",dtype=np.float,delimiter="分割字符串,默认空格",
           skiprows=0,usecols=None,unpack=False)

转置的三种方式

t2 = t1.swapaxes(1,0)
t3 = t1.T
t4 = t1.transpose()

对矩阵进行切片与索引操作

# 取行
# print(t1[1])

# 取连续多行
# print(t1[2:])

# 取不连续多行,用两个方括号包含多个索引值
# print(t1[[2,8,10]])

# 通用写法,加逗号.
# 前面行,后面列
# :表示每列都要
# print(t1[1,:])
# print(t1[2:,3:])
# print(t1[[2,8,10],:])

# 取列
# print(t1[:,0])

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

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

# 取行列
# print(t1[2,3])
# a = t1[2,3]
# print(a.dtype)

# 取3-5行,2-4列
# 取的是行列交叉点的位置
# print(t1[2:5,1:])

# 取多个不相邻的点,只有两个点
# 取的是(0,0)  (2,1)
# print(t1[[0,2],[0,1]])

# bool索引
# 在布尔索引中,会将所有满足条件的值返回
# 这里就是将所有满足条件的数进行改值
# t1[t1>100] = 100
# print(t1)

改值

# 修改位置在3,3上的数值
# t1[3,3] = 0
# print(t1[3,3])

# 三元运算符
# 小于150赋值100,其余赋值300
# t2 = np.where(t1<150,100,300)
# print(t2)

# 裁剪,clip
# 小于XX的都换成XX,大于YY的都替换成YY
# t3 = t1.clip(10,18)
# print(t3)

数据拼接

t1 = np.arange(12).reshape(2,6)
t2 = np.arange(12).reshape(2,6)

# 竖直拼接
t3 = np.vstack((t1,t2))

# 水平拼接
t4 = np.hstack((t1,t2))

# 构建全为0的矩阵
t5 = np.zeros((3,4))

# 构建全为1的矩阵
t6 = np.ones((3,4))

# 构建对角线为1的n阶方阵
t7 = np.eye(4)

nan具有特性: numpy.nan != numpy.nan
可以通过这个特性来找出矩阵中nan的个数

# 第一种方式,可以得出nan的个数
num1 = np.count_nonzero(t1 != t1)

# 第二种方式,可以得出nan的位置
num2 = t1[np.isnan(t1)]

对于一个矩阵,需要将其中的nan替换为列的均值时,可以用以下方法

def fill_with_avg(array):
    col_nums = array.shape[1]
    for i in col_nums:
        temp_col = array[:,i]
        nan_nums = np.count_nonzero(temp_col != temp_col)
        if nan_nums != 0:
            temp_col[np.isnan(temp_col)] = temp_col[temp_col==temp_col].mean()
    return array
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值