提示: 100道题 带你玩转numpy
import numpy as np
print(np.__version__)
print(np.show_config())
print(np.zeros(10))
data = np.zeros((10,10))
print('%d byte'%(data.size*data.itemsize))
print(np.info(np.add))
data = np.zeros(10)
data[4]=1
print(data)
data = np.arange(10,50)
print(data)
data = np.arange(50)
data = data[::-1]
print(data)
a = np.arange(9).reshape(3,3)
print(a)
nz = np.nonzero([1,3,5,0,0,9])
print(nz)
data = np.eye(3)
print(data)
#随机生成(0,1)之间的浮点数
data = np.random.random((3,3,3))
print(data)
#返回一个或一组服从**“0~1”均匀分布**的随机样本值
numpy.random.rand(3,3)
#返回一个或多个从标准正态分布的样本值
numpy.random.randn(3,3)
data = np.random.random((5,5))
# 值
print(np.amax(data))#返回值值
print(np.amax(data, axis=0)) #竖着比较,返回值
print(np.amax(data, axis=1)) #横着比较,返回值
#索引
print(data)
print(np.argmax(data))#此时得到的索引是将数组
#flattern(展成一维数组)后的索引 (17)
#如何得到对应的原数组的索引呢?
ind_max_src = np.unravel_index(np.argmax(data), (5,5))
print(ind_max_src)#(3,2)
print(np.argmax(data, axis=0)) #竖着比较,返回行号
print(np.argmax(data, axis=1)) #横着比较,返回列号
data = np.random.random(30)
m =data.mean()
print(m)
data = np.ones((5,5))
data[1:-1,1:-1]=0
print(data)
data = np.ones((5,5))
data=np.pad(data,pad_width=1,mode='constant',constant_values=0)
print(data)
print(np.isnan(np.nan))
# p.nan和任何数做不等于比较都返回True
# np.nan != np.nan
# np.nan != 0
# np.nan != None
# np.nan != 0.0
print(np.diag(1+np.arange(4),k=-1))
用处:提取对角线元素或构造对角线数组。
参数:K: 对角线的位置参数,0为默认主对角线,1为主对角线偏上一个单位,-1为主对角线偏下一个单位,以此类推。
v: 如果v为一个二维数组(矩阵),则返回该二维数组(矩阵)的K对角线元素,即用来提取返回对角线元素的作用。
如果v为一个一维数组的话,则返回一个以该一维数组作为k对角线元素的矩阵,即用来生成一个对角线元素数组
data = np.zeros((5,5))
data[::2,1::2]=1
data[1::2,::2]=1
print(data)
print(np.unravel_index(100,(6,7,8)))
data = np.tile(np.array([[0,1],[1,0]]),(4,4))
print(data)
data = np.random.randint(1,10,(5,5))
datamax,datamin = np.amax(data),np.amin(data)
print((data-datamin)/(datamax-datamin))
data = np.dot(np.ones((5,3)),np.arange(6).reshape(3,2))
print(data)
data = np.arange(10)
data[(3<data)&(data<9)]*=-1
print(data)
# python sum
print(sum(range(5),-1)) # 9 1+2+3+4+5-1
# numpy sum
from numpy import *
print(sum(range(5),-1))# 10 -1 表示最后一个维度上相加
data = np.arange(5)
print(data**data)
data1 = np.random.randint(1,10,5)
data2 = np.random.randint(1,10,5)
print(np.intersect1d(data1,data2))
today = np.datetime64('today','D')
print(today -np.timedelta64(1,'D'))
print(today+np.timedelta64(1,'D'))
date = np.arange('2022-07','2022-08',dtype='datetime64[D]')
print(date)
data = np.random.uniform(1,10,10)
print(data)
print(np.ceil(data)-1)
print(np.floor(data))
print(np.trunc(data))
print(data -data%1)
print(data.astype(int))
data = np.random.random(10)
data.sort()
print(data)
data = np.random.random(10)
data[data.argmax()]=0
print(data)
data = np.arange(9).reshape(3,3)
for i,v in np.ndenumerate(data):
print(i,v)
n=10
p=5
data = np.zeros((n,n))
np.put(data,np.random.choice(range(n*n),p,replace=False),1)
print(data)
data = np.random.uniform(-5,5,10)
data1 =0.5
n = data[np.abs(data-data1).argmin()]
A = np.random.uniform(1,10,(5,5))
B = np.random.uniform(1,10,(5,5))
#法一
print(np.diag(np.dot(A,B)))
#法二
print(np.sum(A*B.T,axis=1))
data = np.arange(25).reshape(5,5)
data[[1,0]]= data[[0,1]]
print(data)
data = np.random.randint(3,5,50)
print(data,np.bincount(data).argmax())