numpy基本操作

import numpy as np
data=[1,2,3,4,5]
n=np.array(data*10)
print(n)
print(data)
#np数组的维数
n.shape
#数组的类型
n.dtype
#嵌套序列,是由一组等长列表组成的列表
arr=[[1,2,3,4,5],[1,3,45,6,7]]
arr2=np.array(arr)
print(arr2)
#数组的维度
print(arr2.ndim)
#数组的形状
print(arr2.shape)

#将其全部换成字符串类型
arr=[['1',2,3,4],[1,2,3,4]]
arr2=np.array(arr)
print(arr2)
#为unicode类型
print(arr2.dtype)

#当其中有个为float型时变为float64类型
arr=[[1.1,2,3,4],[1,2,3,4]]
arr2=np.array(arr)
print(arr2)
print(arr2.dtype)

#numpy对指定数组创建
np.zeros(10)
np.ones((2,3))
np.empty((2,3,4))
np.arange(10)
arr=np.array([1,2,3.3,-4.3,-100.9])
#将小数点后的数字都省略
print(arr.astype(np.int32))
#numpy在不用编写循环进行矢量化计算:矢量化
arr1=np.array([1,2,3,4])
arr2=np.array([1,2,3,4])
arr1+arr2
arr3=np.array([[1,2,3,4],[1,3,6,7]])
arr4=np.array([[1,2,3,4],[1,3,6,7]])
arr3+arr4
5*arr3
5/arr3
#numpy索引和切片操作
arr=np.arange(10)
print(arr)
print(arr[1])
print(arr[4:])
arr[0:4]=11
arr_copy=arr.copy()
print(arr_copy)
#一个二维数组的访问方式
arr1=np.array([[1,2,3,4],[5,6,7,8]])
print(arr1[0][1])
print(arr1[0,1])
names=np.array(['Tony','Jack','Robin'])
print(names=="Tony")
print((names=='Tony')&(names=='Robin'))
#花式索引,利用整数数组进行数组检索
arr=np.empty((8,4))
for i in range(8):
    arr[i]=i
print(arr)
#第一行全为4,第二行全为3
print(arr[[4,3,0,6]])
#32个元素被切成了8*4个数组
arr1=np.arange(32).reshape((8,4))
# print(arr[[1,2,3,4],[0,3,2,1]])
# print(arr1[np.ix_([1,5,7,2],[0,3,4,5])])
#数组的转置和轴对换
arr=np.arange(15).reshape((3,5))
print(arr)
#进行转置
print(arr.transpose())
print(arr.T)
arr=np.arange(24).reshape((2,3,4))
print(arr.transpose((1,2,0)))
#条件逻辑转数组
x_array=np.array([1,2,3,4,5])
y_array=np.array([11,22,33,44,55])
condition=np.array([True,True,False,True,False])
result=[(x if c else y) for x,y,c in zip(x_array,y_array,condition)]
print(result)
#np.where功能相同
r=np.where(condition,x_array,y_array)
print(r)
arr=np.random.randn(1,4)
print(arr)
#如果arr中的数组大于0,则用2代替,否则用-2代替
arr1=np.where(arr>0,2,-2)
print(arr1)
#numpy的数学运算
arr=np.random.randn(4,4)
#求平均值
arr.mean()
print(np.mean(arr))
#求和
print(arr.sum())
#求标准差
print(arr.std())
#轴1上的平均值
print(arr.mean(axis=()))
#求轴0上的总和
print(arr.sum(0))
#排序方法
arr=np.random.randn(4)
arr.sort()
arr=np.random.randn(4,4)
#按轴1进行排序
arr.sort(1)
#numpy文件操作,两个操作np.save,np.load,默认情况下以二进制的形式压缩原始到.npy的文件中
arr=np.arange(10)
print(arr)
np.save('arr_array',arr)
np.load("arr_array.npy")
#保存为压缩文件
np.savez('array_1',a=arr)
np.load('array_1.npz')['a']
#保存为txt文件,delimiter=",",分隔符为,
np.savetxt("array_txt.txt",arr,delimiter=",")
np.loadtxt("array_txt.txt",delimiter=",")
#数学运算,dot为乘法运算,trace为对角线元素之和
#det计算矩阵的行列式
#eig计算方阵本征值和本征向量
#inv计算方阵的逆
x=np.array([[1,2,3],[4,5,6]])
y=np.array([[1,2],[3,4],[5,6]])
print(x.dot(y))
#随机漫步
import os 
import matplotlib.pyplot as plt
position=0 #初始化一个位置的值
walk=[position]
steps=1000
for i in range(steps):
    steps=1 if np.random.randint(0,2) else -1
    position+=steps
    walk.append(position)
plt.plot(walk)
#什么时候距离远点10步远
print((np.abs(walk)>10).argmax())

在这里插入图片描述

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页