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]:指定用那几列