pycharm调用numpy分析


结合以下博客分析 [https://blog.csdn.net/weixin_44340318/article/details/105888864]

numpy数据类型分析


import numpy as np
import random

#使用numpy生成数组,得到ndarray的类型
t1 = np.array([1,2,3,])
print(t1)
print(type(t1))

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

t3 = np.arange(4,10,2)
print(t3)
print(type(t3))

print(t3.dtype)
print("*"*100)
# numpy中的数据类型

t4 = np.array(range(1,4),dtype="i1")
print(t4)
print(t4.dtype)

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

# 调整数据类型
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 = "./youtube_video_data/US_video_data_numbers.csv"
uk_file_path = "./youtube_video_data/GB_video_data_numbers.csv"

# t1 = np.loadtxt(us_file_path,delimiter=",",dtype="int",unpack=True)
t2 = np.loadtxt(us_file_path,delimiter=",",dtype="int")

# print(t1)
print(t2)

print("*"*100)

#取行
# print(t2[2])

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

#取不连续的多行;注意方括号的使用
# print(t2[[2,8,10]])

# print(t2[1,:])
# print(t2[2:,:])
# print(t2[[2,10,3],:])

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

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

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

#取行和列,取第3行,第四列的值
# a = t2[2,3]
# print(a)
# print(type(a))

#取多行和多列,取第3行到第五行,第2列到第4列的结果(包头不包尾)
#取的是行和列交叉点的位置
b = t2[2:5,1:4]
# print(b)

#取多个不相邻的点  此处应该注意
#选出来的结果是(0,0) (2,1) (2,3)
c = t2[[0,2,2],[0,1,3]]
print(c)


常见调用产生序列+求和等等

import numpy as np

t=np.arange(24).reshape((4,6))

print(t)

print('*'*100)
# np里面三元运算符(把t中小于等于3的数字替换为100,把大于3的替换为200)
print(np.where(t<=3,100,300))

print('*'*100)
# np里面的布尔索引(把t中小于10的数字替换为0)
t[t<10]=0
print(t)

print('*'*100)
#转换数据类型

t=t.astype(float)

t[3,3]=np.nan

print(t)

print('*'*100)
# 2行3列全为0
t1=np.zeros((2,3))
print(t1)

print('*'*100)
# 2行3列全为1
t2=np.ones((2,3))
print(t2)

print('*'*100)
# 3行3列对角线全为1
t11=np.eye(4)
print(t11)

print('*'*100)
#获取最大值最小值的位置,axis=1每一行的最值,axis=0每一列的最值
t[3,3]=10
print(t)
a=np.argmax(t,axis=1)
b=np.argmin(t, axis=0)
print(a,b)

print('*'*100)
# 产生4行5列10到20之间的随机数
print(np.random.randint(10,20,(4,5)))

print('*'*100)
# 统计数组不为了0的个数
print(np.count_nonzero(t))

print('*'*100)
# 统计数组中相等的个数
print(np.count_nonzero(t!=t))

print('*'*100)
# 统计每一列相加的结果
print(t)
print('*'*100)
print(np.sum(t,axis=0))
# 统计每一行相加的结果
print('*'*100)
print(np.sum(t,axis=1))

# 求每一列的和
print('*'*100)
print(t.sum(axis=0))
# 求每一列的均值
print('*'*100)
print(t.mean(axis=0))
# 求每一列的最大值最小值
print('*'*100)
print(t.max(axis=0))
print(t.min(axis=0))

# 求每一列的中值
print('*'*100)
print(np.median(t,axis=0))
print('*'*100)
print(t)

# 求每一列的极值
print('*'*100)
print(np.ptp(t,axis=0))

print('*'*100)
# 求标准差
print(t.std())

替换行列中nan的数值

import numpy as np

def a(t):
    # t.shape[1]为列数,t.shape[0]为行数
    for i in range(t.shape[1]):
        # 取出某一列
        ni=t[:,i]
        # 判断有没有nan,有则计数
        a=np.count_nonzero(ni!=ni)

        if a!=0:
            # 找出在这一列中除去nan,剩下的数值
            notnan=ni[ni==ni]
            # 将nan换成这一列平均值
            ni[ni!=ni]=notnan.mean()
    return t

if __name__ == '__main__':
    # astype转换类型使np.nan不报错
    t1 = np.arange(24).reshape(4, 6).astype('float')
    t1[1, 2:] = np.nan

    print(t1)
    print('*'*100)
    print(a(t1))


结果
在这里插入图片描述

结合以下问题做的思维导图

在这里插入图片描述

在这里插入图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值