python 替换array中的值_python编程笔记(6)-numpy

这篇博客详细介绍了Python numpy库在处理数组时的各项操作,包括创建、读取、索引、修改值、数组拼接、行列交换、随机数、处理nan和inf,以及常用的统计函数应用。通过实例解析,帮助读者深入理解numpy数组的使用技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录:

05e59d6041affdc491c03de0cfad159e.png

f8ca19e28019c75eea12c774d2cbfcf3.png

1、数组

import numpy as np
t1=np.arange(0,24).reshape(4,6);print(t1)
t2=np.arange(0,6);print(t2)
t=t1-t2
print(t)
t.shape

####################
[[ 0  1  2  3  4  5]
 [ 6  7  8  9 10 11]
 [12 13 14 15 16 17]
 [18 19 20 21 22 23]]
[0 1 2 3 4 5]
[[ 0  0  0  0  0  0]
 [ 6  6  6  6  6  6]
 [12 12 12 12 12 12]
 [18 18 18 18 18 18]]
(4, 6)

2、读取数据

    #读取文件
import numpy as np   
data=np.loadtxt(frame,dtype=np.float,delimiter=",",skiprows=0,usercols=None,unpack=False)

    #转置
t2=np.arange(24).reshape((4,6))
t2.T
t2.transpose()

3、创建数组

import numpy as np
      #使用numpy 生成数组,得到 numpy.ndarray类型
a=np.array([1,2,3])
b=np.array(range(10))
c=np.arange(10)
d=np.arange(4,10,2)
print(a)   
print(b)
print(c)
print(d)

      # 类型
print(type(d))  #数组类型
print(d.dtype)  #数组中元素类型
t4=np.array(range(1,4),dtype=float)
print(t4)
print(t4.dtype)

t5=np.array([1,1,0,0],dtype=bool)
print(t5)
print(t5.dtype)

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

     #生成10个随机数
import random
t7=np.array([random.random() for i in range(10)])
print(t7)
print(t7.dtype)
    #保留几位小数
t8=np.round(t7,2)
print(t8)

4、索引与切片

import numpy as np
t=np.array(range(20)).reshape(4,5)
print(t)
            
print(t[1,:])      #取行           
print(t[1:,:])     #取连续的多行           
print(t[[0,2],:])  #取不连续的多行  
print(t[:,2])      #取列  
print(t[:,1:4])    #取连续的多列  
print(t[:,[1,3]])  #取不连续多列  
print(t[2,4])      #取3 行4列值
print(t[1:2,1:2])  #取出相邻点
print(t[0,2,2],[0,1,3]) #取出不相邻点(0,0,),(2,1),(2,3)

5、修改值

import numpy as np
t=np.array(range(20)).reshape(4,5);t1=t
print(t)

#数值的修改
t[:,2:4]=0;   
print(t);print(t1)

#布尔索引
t1[t1<10]=3   #将小于10 的数字,替换成3

#三元运算符
d=np.where(t<=10,0,20)  #小于10替换成0,其他替换成20
d

y=np.clip(10,18)    #小于10,替换成10。大于18替换成18
y

6、数组的拼接、行列交换

import numpy as np
t1=np.array(range(12)).reshape(3,4)
t2=np.arange(8,32,2).reshape(3,4)
#竖直拼接
np.vstack((t1,t2))
#水平拼接
np.hstack((t1,t2))
# 行顺序交换
t1[[1,2],:]=t1[[2,1],:]
t1
#列顺序交换
t2[:,[1,2]]=t2[:,[2,1]]
t2

7、随机数

###随机数
np.random.seed(10)  #随机种子
t=np.random.randint(10,20,(4,5))  ###4行5列  10-20之间数
print(t)

8、nan与 inf

nan:

  • 缺失(当读取本地文件为float时,如果缺失就会出现nan)
  • 不合适计算:比如无穷大减去无穷小,会出现nan
  • 是float数据类型
  • 两个nan不相等
  • nan与任何值计算,均为nan

inf:

  • (-inf,+inf)正无穷,负无穷
  • 0做除数(python中直接报错,numpy中出现-inf ,+inf)
  • 是float数据类型
a=np.nan;type(a)     #类型
np.nan==np.nan       # #不等性  false

t=np.arange(12).reshape(3,4)
d=t.astype("float");print(d.dtype)

d[:,0]=0                          #赋值0
d[2,2]=np.nan;print(d)            #赋值nan(由于nan是float型,所以在赋值前需要)

np.count_nonzero(d)               #非0个数
np.count_nonzero(d!=d)            #nan个数
np.count_nonzero(np.isnan(d))     #nan个数

np.sum(d,axis=1)                  #nan运算后,仍为nan

9、常用统计函数

#numpy常用统计函数
t=np.arange(12).reshape((3,4)).astype("float")
t[1,2:]=np.nan;print(t)

t.sum(axis=0)      #求和
t.std()            #标准差
np.median(t)       #中位数

#练习:将空值填充为中位数
t=np.arange(12).reshape((3,4)).astype("float")
t[1,2:]=np.nan
def fill_ndarry(data):
    for i in range(data.shape[1]):
        temp_col=data[:,i]           
        nan_num=np.count_nonzero(np.isnan(temp_col))   #空值个数
        if nan_num!=0:
            yy=temp_col[temp_col==temp_col]        #不为nan的均值
            temp_col[np.isnan(temp_col)]=yy.mean() #赋值
    return data

if __name__=="__main__":

    print(t)
    t=fill_ndarry(t)
    print(t)

10、其他

import numpy as np
t=np.array(range(12)).reshape(3,4)
#创建一个全为0的数组-2行3列
np.zeros((2,3))
#创建一个全为1的数组
np.ones((2,3))
#创建一个对角线为1的方阵
np.eye(4)
#获取最大值的位置
np.argmax(t,axis=0)
#获取最小值的位置
np.argmin(t,axis=0)


注意点:
a=b      不能完全复制,ab 互相影响
a=b[:]  两者数据会相互影响
a=b.copy()   ab互不影响
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值