numpy学习笔记

numpy基本概念:

一个很方便的进行矩阵数组相关操作的库

一个数组所包含的信息是非常多的,我们也可以用这样的多的内容进行计算

import numpy as np

a_list= [1,2,2,3]

a_nparry=np.array(a_list)

a_nparry[-2:]

#矩阵格式

a_array=np.array([
    [1,2,3],
    [2,3,4],
    [3,4,5]
])

d=a_array.shape
e=a_nparry.size
f=a_array.ndim

g=a_array[1,2]#索引
a_array[1,2]=2#赋值
h=a_array[1]
j=a_array[:,1]#第二列
j=a_array[0,0:2]#第0行0到2
pass

a_array

array([[1, 2, 3],
[2, 3, 2],
[3, 4, 5]])

a_array2=a_array
a_array2[1,2]=1000
a_array2

array([[ 1, 2, 3],
[ 2, 3, 1000],
[ 3, 4, 5]])

a_array

array([[ 1, 2, 3],
[ 2, 3, 1000],
[ 3, 4, 5]])

a_array2=a_array.copy()
a_array2[1,1]=10000
a_array

array([[ 1, 2, 3],
[ 2, 3, 1000],
[ 3, 4, 5]])


a_array2

array([[ 1, 2, 3],
[ 2, 10000, 10000],
[ 3, 4, 5]])

a_arr=np.arange(0,100,10)
a_arr

array([ 0, 10, 20, 30, 40, 50, 60, 70, 80, 90])

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

array([False, True, False, False, True, True, False, True, True,
False])

a_arr[mask]#记住这个是中括号

array([10, 40, 50, 70, 80])

random_array=np.random.rand(10)
random_array

array([0.33437899, 0.8534622 , 0.52060191, 0.1407311 , 0.03577722,
0.14826917, 0.11554851, 0.03838209, 0.11986814, 0.53189967])

mask=random_array > 0.5
mask

array([False, True, True, False, False, False, False, False, False,
True])

a_arr[mask] # 这样就可以选出我想要符合条件的值

array([10, 20, 90])

b_arr=np.array([10,20,30,60,70,90])
b_arr>50

array([False, False, False, True, True, True])

np.where(b_arr>50)

(array([3, 4, 5], dtype=int64),)

a_arr[np.where(b_arr>50)]

array([30, 40, 50])

xi_arr=np.array([1,2,2,45,4],dtype=np.float32)
xi_arr

array([ 1., 2., 2., 45., 4.], dtype=float32)

xi_arr.dtype

dtype('float32')

xi_arr.nbytes

20

bo=np.array([1,3,4,4,5,56])
np.asanyarray(bo,dtype=np.float32)

array([ 1., 3., 4., 4., 5., 56.], dtype=float32)

bo

array([ 1, 3, 4, 4, 5, 56])

bo1=np.asanyarray(bo,dtype=np.float32)
bo1

array([ 1., 3., 4., 4., 5., 56.], dtype=float32)

bo.astype(np.float32)

array([ 1., 3., 4., 4., 5., 56.], dtype=float32)

数值计算

import numpy as np
arr=np.array([[1,2,3],[4,5,6]])
arr

array([[1, 2, 3],
[4, 5, 6]])

np.sum(arr)

21

#上面这个是把数组里面的所有值都相加了

指定维度(轴)累加

np.sum(arr,axis=0)#沿着竖着的轴相加

array([5, 7, 9])

np.sum(arr,axis=1)#沿着横向的轴相加

array([ 6, 15])

np.ndim(arr)

2

np.sum(arr,axis=-1)#因为有两维度所以最后一个维度也是1的维度(x轴)

array([ 6, 15])

arr.sum(axis=0)

array([5, 7, 9])


arr.sum(axis=1)

array([ 6, 15])

arr.prod()# 累乘乘积

720

arr.prod(axis=1)

array([ 6, 120])

arr.min(axis=1)

array([1, 4])

arr.max(axis=0)

array([4, 5, 6])

寻找索引索引位置

arr.argmax()#寻找最大的值的位置

5

arr.argmax(axis=1)#寻找最大的值的位置

array([2, 2], dtype=int64)

计算均值

arr.mean()

3.5

计算标准差

arr.std()

1.707825127659933

arr.std(axis=1)

array([0.81649658, 0.81649658])

计算方差

arr.var()

2.9166666666666665

做限制

arr.clip(2,4)

array([[2, 2, 3],
[4, 4, 4]])

# 大于的都会小于4,

近似

hhh=np.array([1.21212,12.2112312312,666,367])
hhh.round()

array([ 1., 12., 666., 367.])

hhh.round(decimals=1)

array([ 1.2, 12.2, 666. , 367. ])

四则运算

文件读写

import numpy as np
%%writefile a.txt
1 2 3 4 5 6 7
8 9 10 11 12 13 14

Overwriting a.txt

data1=[]
with open('a.txt') as f:
    for line in f:
        worked=line.split()
        print(worked)
        data1=[float(x) for x in worked]### 把数组里的所有成员都转换为数字
        
data=np.array(data1)
print(data)

['1', '2', '3', '4', '5', '6', '7']
['8', '9', '10', '11', '12', '13', '14']
[ 8. 9. 10. 11. 12. 13. 14.]

data=np.loadtxt('a.txt',delimiter=' ')
data

array([[ 1., 2., 3., 4., 5., 6., 7.],
[ 8., 9., 10., 11., 12., 13., 14.]])

data=np.loadtxt('a.txt',delimiter=' ',skiprows=1)
data

array([ 8., 9., 10., 11., 12., 13., 14.])

#去掉了第一行
  • skiprows:去掉几行
  • delimiter:分割符“,”
  • usecols:[0,1,5]:指定用那几列

posted @ 2023-02-10 18:43  E_sheep  阅读(49)  评论(0)    收藏  举报