(提示: dtype)
Z?=?np.zeros(10,?[('position',?[('x',?float,?1),?
????????????????????????????????('y',?float,?1)]),
??????????????????('color',????[('r',?float,?1),?
????????????????????????????????('g',?float,?1),?
????????????????????????????????('b',?float,?1)])])
print?(Z)
(提示: np.atleast_2d, T, np.sqrt)
Z?=?np.random.random((100,?2))
X,?Y?=?np.atleast_2d(Z[:,?0],?Z[:,?1])
D?=?np.sqrt((X-X.T)**2?+?(Y-Y.T)**2)
print?(D)
#?使用scipy库可以更快
import?scipy.spatial
Z?=?np.random.random((100,2))
D?=?scipy.spatial.distance.cdist(Z,Z)
print(D)
(提示: astype(copy=False))
Z?=?np.arange(10,?dtype=np.int32)
Z?=?Z.astype(np.float32,?copy=False)
print(Z)
(提示: np.genfromtxt)
1,?2,?3,?4,?5
6,??,??,?7,?8
?,??,?9,10,11
#?先把上面保存到文件example.txt中
#?这里不使用StringIO,?因为Python2?和Python3?在这个地方有兼容性问题
Z?=?np.genfromtxt("example.txt",?delimiter=",")??
print(Z)
(提示: np.ndenumerate, np.ndindex)
Z?=?np.arange(9).reshape(3,3)
for?index,?value?in?np.ndenumerate(Z):
????print(index,?value)
for?index?in?np.ndindex(Z.shape):
????print(index,?Z[index])
(提示: np.meshgrid, np.exp)
X,?Y?=?np.meshgrid(np.linspace(-1,?1,?10),?np.linspace(-1,?1,?10))
D?=?np.sqrt(X**2?+?Y**2)
sigma,?mu?=?1.0,?0.0
G?=?np.exp(-(?(D-mu)**2?/?(2.0*sigma**2)?))
print?(G)
(提示: np.put, np.random.choice)
#?Author:?Divakar
n?=?10
p?=?3
Z?=?np.zeros((n,n))
np.put(Z,?np.random.choice(range(n*n),?p,?replace=False),1)
print(Z)
(提示: mean(axis=,keepdims=))
#?Author:?Warren?Weckesser
X?=?np.random.rand(5,?10)
#?新
Y?=?X?-?X.mean(axis=1,?keepdims=True)
#?旧
Y?=?X?-?X.mean(axis=1).reshape(-1,?1)
print(Y)
(提示: argsort)
#?Author:?Steve?Tjoa
Z?=?np.random.randint(0,10,(3,3))
print(Z)
print(Z[?Z[:,1].argsort()?])
(提示: any, ~)
#?Author:?Warren?Weckesser
Z?=?np.random.randint(0,3,(3,10))
print((~Z.any(axis=0)).any())
(提示: np.abs, argmin, flat)
Z?=?np.random.uniform(0,1,10)
z?=?0.5
m?=?Z.flat[np.abs(Z?-?z).argmin()]
print(m)
(提示: np.nditer)
A?=?np.arange(3).reshape(3,?1)
B?=?np.arange(3).reshape(1,?3)
it?=?np.nditer([A,?B,?None])
for?x,?y,?z?in?it:
????z[...]?=?x?+?y
print?(it.operands[2])
(提示: class method)
class?NameArray(np.ndarray):
????def?__new__(cls,?array,?name="no?name"):
????????obj?=?np.asarray(array).view(cls)
????????obj.name?=?name
????????return?obj
????def?__array_finalize__(self,?obj):
????????if?obj?is?None:?return
????????self.info?=?getattr(obj,?'name',?"no?name")
Z?=?NameArray(np.arange(10),?"range_10")
print?(Z.name)
(提示: np.bincount | np.add.at)
#?Author:?Brett?Olsen
Z?=?np.ones(10)
I?=?np.random.randint(0,len(Z),20)
Z?+=?np.bincount(I,?minlength=len(Z))
print(Z)
#?Another?solution
#?Author:?Bartosz?Telenczuk
np.add.at(Z,?I,?1)
print(Z)
(提示: np.bincount)
#?Author:?Alan?G?Isaac
X?=?[1,2,3,4,5,6]
I?=?[1,3,9,3,4,1]
F?=?np.bincount(I,X)
print(F)
(提示: np.unique)
#?Author:?Nadav?Horesh
w,h?=?16,16
I?=?np.random.randint(0,2,(h,w,3)).astype(np.ubyte)
F?=?I[...,0]*256*256?+?I[...,1]*256?+I[...,2]
n?=?len(np.unique(F))
print(np.unique(I))
(提示: sum(axis=(-2,-1)))
A?=?np.random.randint(0,10,(3,4,3,4))
#?传递一个元组(numpy?1.7.0)
sum?=?A.sum(axis=(-2,-1))
print(sum)
#?将最后两个维度压缩为一个
#?(适用于不接受轴元组参数的函数)
sum?=?A.reshape(A.shape[:-2]?+?(-1,)).sum(axis=-1)
print(sum)
(提示: np.bincount)
#?Author:?Jaime?Fernández?del?Río
D?=?np.random.uniform(0,1,100)
S?=?np.random.randint(0,10,100)
D_sums?=?np.bincount(S,?weights=D)
D_counts?=?np.bincount(S)
D_means?=?D_sums?/?D_counts
print(D_means)
#?Pandas?solution?as?a?reference?due?to?more?intuitive?code
import?pandas?as?pd
print(pd.Series(D).groupby(S).mean())
(提示: np.diag)
#?Author:?Mathieu?Blondel
A?=?np.random.uniform(0,1,(5,5))
B?=?np.random.uniform(0,1,(5,5))
#?Slow?version??
np.diag(np.dot(A,?B))
#?Fast?version
np.sum(A?*?B.T,?axis=1)
#?Faster?version
np.einsum("ij,ji->i",?A,?B)
(提示: array[::4])
#?Author:?Warren?Weckesser
Z?=?np.array([1,2,3,4,5])
nz?=?3
Z0?=?np.zeros(len(Z)?+?(len(Z)-1)*(nz))
Z0[::nz+1]?=?Z
print(Z0)
(提示: array[:, :, None])
A?=?np.ones((5,5,3))
B?=?2*np.ones((5,5))
print(A?*?B[:,:,None])
(提示: array[[]] = array[[]])
#?Author:?Eelco?Hoogendoorn
A?=?np.arange(25).reshape(5,5)
A[[0,1]]?=?A[[1,0]]
print(A)
(提示: repeat, np.roll, np.sort, view, np.unique)
#?Author:?Nicolas?P.?Rougier
faces?=?np.random.randint(0,100,(10,3))
F?=?np.roll(faces.repeat(2,axis=1),-1,axis=1)
F?=?F.reshape(len(F)*3,2)
F?=?np.sort(F,axis=1)
G?=?F.view(?dtype=[('p0',F.dtype),('p1',F.dtype)]?)
G?=?np.unique(G)
print(G)
(提示: np.repeat)
#?Author:?Jaime?Fernández?del?Río
C?=?np.bincount([1,1,2,3,4,4,6])
A?=?np.repeat(np.arange(len(C)),?C)
print(A)
(提示: np.cumsum)
#?Author:?Jaime?Fernández?del?Río
def?moving_average(a,?n=3)?:
????ret?=?np.cumsum(a,?dtype=float)
????ret[n:]?=?ret[n:]?-?ret[:-n]
????return?ret[n?-?1:]?/?n
Z?=?np.arange(20)
print(moving_average(Z,?n=3))
(提示: from numpy.lib import stride_tricks)
#?Author:?Joe?Kington?/?Erik?Rigtorp
from?numpy.lib?import?stride_tricks
def?rolling(a,?window):
????shape?=?(a.size?-?window?+?1,?window)
????strides?=?(a.itemsize,?a.itemsize)
????return?stride_tricks.as_strided(a,?shape=shape,?strides=strides)
Z?=?rolling(np.arange(10),?3)
print(Z)
(提示: np.logical_not, np.negative)
#?Author:?Nathaniel?J.?Smith
Z?=?np.random.randint(0,2,100)
np.logical_not(Z,?out=Z)
Z?=?np.random.uniform(-1.0,1.0,100)
np.negative(Z,?out=Z)
def?distance(P0,?P1,?p):
????T?=?P1?-?P0
????L?=?(T**2).sum(axis=1)
????U?=?-((P0[:,0]-p[...,0])*T[:,0]?+?(P0[:,1]-p[...,1])*T[:,1])?/?L
????U?=?U.reshape(len(U),1)
????D?=?P0?+?U*T?-?p
????return?np.sqrt((D**2).sum(axis=1))
P0?=?np.random.uniform(-10,10,(10,2))
P1?=?np.random.uniform(-10,10,(10,2))
p??=?np.random.uniform(-10,10,(?1,2))
print(distance(P0,?P1,?p))
#?Author:?Italmassov?Kuanysh
#?based?on?distance?function?from?previous?question
P0?=?np.random.uniform(-10,?10,?(10,2))
P1?=?np.random.uniform(-10,10,(10,2))
p?=?np.random.uniform(-10,?10,?(10,2))
print(np.array([distance(P0,P1,p_i)?for?p_i?in?p]))
(提示: minimum, maximum)
#?Author:?Nicolas?Rougier
Z?=?np.random.randint(0,10,(10,10))
shape?=?(5,5)
fill??=?0
position?=?(1,1)
R?=?np.ones(shape,?dtype=Z.dtype)*fill
P??=?np.array(list(position)).astype(int)
Rs?=?np.array(list(R.shape)).astype(int)
Zs?=?np.array(list(Z.shape)).astype(int)R_start?=?np.zeros((len(shape),)).astype(int)
R_stop??=?np.array(list(shape)).astype(int)
Z_start?=?(P-Rs//2)
Z_stop??=?(P+Rs//2)+Rs%2
R_start?=?(R_start?-?np.minimum(Z_start,0)).tolist()
Z_start?=?(np.maximum(Z_start,0)).tolist()
R_stop?=?np.maximum(R_start,?(R_stop?-?np.maximum(Z_stop-Zs,0))).tolist()
Z_stop?=?(np.minimum(Z_stop,Zs)).tolist()
r?=?[slice(start,stop)?for?start,stop?in?zip(R_start,R_stop)]
z?=?[slice(start,stop)?for?start,stop?in?zip(Z_start,Z_stop)]
R[r]?=?Z[z]
print(Z)
print(R)
(提示: stride_tricks.as_strided)
#?Author:?Stefan?van?der?Walt
Z?=?np.arange(1,15,dtype=np.uint32)
R?=?stride_tricks.as_strided(Z,(11,4),(4,4))
print(R)
(提示: np.linalg.svd)
#?Author:?Stefan?van?der?Walt
Z?=?np.random.uniform(0,1,(10,10))
U,?S,?V?=?np.linalg.svd(Z)?#?Singular?Value?Decomposition
rank?=?np.sum(S?>?1e-10)
print(rank)
(提示: np.bincount, argmax)
Z?=?np.random.randint(0,10,50)
print(np.bincount(Z).argmax())
(提示: stride_tricks.as_strided)
#?Author:?Chris?Barker
Z?=?np.random.randint(0,5,(10,10))
n?=?3
i?=?1?+?(Z.shape[0]-3)
j?=?1?+?(Z.shape[1]-3)
C?=?stride_tricks.as_strided(Z,?shape=(i,?j,?n,?n),?strides=Z.strides?+?Z.strides)
print(C)
(提示: class method)
#?Author:?Eric?O.?Lebigot
#?Note:?only?works?for?2d?array?and?value?setting?using?indices
class?Symetric(np.ndarray):
????def?__setitem__(self,?index,?value):
????????i,j?=?index
????????super(Symetric,?self).__setitem__((i,j),?value)
????????super(Symetric,?self).__setitem__((j,i),?value)
def?symetric(Z):
????return?np.asarray(Z?+?Z.T?-?np.diag(Z.diagonal())).view(Symetric)
S?=?symetric(np.random.randint(0,10,(5,5)))
S[2,3]?=?42
print(S)
(提示: np.tensordot)
#?Author:?Stefan?van?der?Walt
p,?n?=?10,?20
M?=?np.ones((p,n,n))
V?=?np.ones((p,n,1))
S?=?np.tensordot(M,?V,?axes=[[0,?2],?[0,?1]])
print(S)
#?It?works,?because:
#?M?is?(p,n,n)
#?V?is?(p,n,1)
#?Thus,?summing?over?the?paired?axes?0?and?0?(of?M?and?V?independently),
#?and?2?and?1,?to?remain?with?a?(n,1)?vector.
(提示: np.add.reduceat)
#?Author:?Robert?Kern
Z?=?np.ones((16,16))
k?=?4
S?=?np.add.reduceat(np.add.reduceat(Z,?np.arange(0,?Z.shape[0],?k),?axis=0),?np.arange(0,?Z.shape[1],?k),?axis=1)
print(S)
(提示: Game of Life , Game of Life有哪些图形?)
#?Author:?Nicolas?Rougier
def?iterate(Z):
????#?Count?neighbours
????N?=?(Z[0:-2,0:-2]?+?Z[0:-2,1:-1]?+?Z[0:-2,2:]?+
?????????Z[1:-1,0:-2]????????????????+?Z[1:-1,2:]?+
?????????Z[2:??,0:-2]?+?Z[2:??,1:-1]?+?Z[2:??,2:])
????#?Apply?rules
????birth?=?(N==3)?&?(Z[1:-1,1:-1]==0)
????survive?=?((N==2)?|?(N==3))?&?(Z[1:-1,1:-1]==1)
????Z[...]?=?0
????Z[1:-1,1:-1][birth?|?survive]?=?1
????return?Z
Z?=?np.random.randint(0,2,(50,50))
for?i?in?range(100):?Z?=?iterate(Z)
print(Z)
(提示: np.argsort | np.argpartition)
Z?=?np.arange(10000)
np.random.shuffle(Z)
n?=?5
#?Slow
print?(Z[np.argsort(Z)[-n:]])
#?Fast
print?(Z[np.argpartition(-Z,n)[:n]])
(提示: np.indices)
#?Author:?Stefan?Van?der?Walt
def?cartesian(arrays):
????arrays?=?[np.asarray(a)?for?a?in?arrays]
????shape?=?(len(x)?for?x?in?arrays)
????ix?=?np.indices(shape,?dtype=int)
????ix?=?ix.reshape(len(arrays),?-1).T
????for?n,?arr?in?enumerate(arrays):
????????ix[:,?n]?=?arrays[n][ix[:,?n]]
????return?ix
print?(cartesian(([1,?2,?3],?[4,?5],?[6,?7])))
(提示: np.core.records.fromarrays)
Z?=?np.array([("Hello",?2.5,?3),
??????????????("World",?3.6,?2)])
R?=?np.core.records.fromarrays(Z.T,?
???????????????????????????????names='col1,?col2,?col3',
???????????????????????????????formats?=?'S8,?f8,?i8')
print(R)
(提示: np.power, *, np.einsum)
#?Author:?Ryan?G.
x?=?np.random.rand(5e7)
%timeit?np.power(x,3)
%timeit?x*x*x
%timeit?np.einsum('i,i,i->i',x,x,x)
(提示: np.where)
#?Author:?Gabe?Schwartz
A?=?np.random.randint(0,5,(8,3))
B?=?np.random.randint(0,5,(2,2))
C?=?(A[...,?np.newaxis,?np.newaxis]?==?B)
rows?=?np.where(C.any((3,1)).all(1))[0]
print(rows)
#?Author:?Robert?Kern
Z?=?np.random.randint(0,5,(10,3))
print(Z)
#?solution?for?arrays?of?all?dtypes?(including?string?arrays?and?record?arrays)
E?=?np.all(Z[:,1:]?==?Z[:,:-1],?axis=1)
U?=?Z[~E]
print(U)
#?soluiton?for?numerical?arrays?only,?will?work?for?any?number?of?columns?in?Z
U?=?Z[Z.max(axis=1)?!=?Z.min(axis=1),:]
print(U)
(提示: np.unpackbits)
#?Author:?Warren?Weckesser
I?=?np.array([0,?1,?2,?3,?15,?16,?32,?64,?128])
B?=?((I.reshape(-1,1)?&?(2**np.arange(8)))?!=?0).astype(int)
print(B[:,::-1])
#?Author:?Daniel?T.?McDonald
I?=?np.array([0,?1,?2,?3,?15,?16,?32,?64,?128],?dtype=np.uint8)
print(np.unpackbits(I[:,?np.newaxis],?axis=1))
(提示: np.ascontiguousarray)
#?Author:?Jaime?Fernández?del?Río
Z?=?np.random.randint(0,2,(6,3))
T?=?np.ascontiguousarray(Z).view(np.dtype((np.void,?Z.dtype.itemsize?*?Z.shape[1])))
_,?idx?=?np.unique(T,?return_index=True)
uZ?=?Z[idx]
print(uZ)
(提示: np.einsum)
#?Author:?Alex?Riley
#?Make?sure?to?read:?http://ajcr.net/Basic-guide-to-einsum/
A?=?np.random.uniform(0,1,10)
B?=?np.random.uniform(0,1,10)
np.einsum('i->',?A)???????#?np.sum(A)
np.einsum('i,i->i',?A,?B)?#?A?*?B
np.einsum('i,i',?A,?B)????#?np.inner(A,?B)
np.einsum('i,j->ij',?A,?B)????#?np.outer(A,?B)
(提示: np.cumsum, np.interp)
#?Author:?Bas?Swinckels
phi?=?np.arange(0,?10*np.pi,?0.1)
a?=?1
x?=?a*phi*np.cos(phi)
y?=?a*phi*np.sin(phi)
dr?=?(np.diff(x)**2?+?np.diff(y)**2)**.5?#?segment?lengths
r?=?np.zeros_like(x)
r[1:]?=?np.cumsum(dr)????????????????#?integrate?path
r_int?=?np.linspace(0,?r.max(),?200)?#?regular?spaced?path
x_int?=?np.interp(r_int,?r,?x)???????#?integrate?path
y_int?=?np.interp(r_int,?r,?y)
(提示: np.logical_and.reduce, np.mod)
#?Author:?Evgeni?Burovski
X?=?np.asarray([[1.0,?0.0,?3.0,?8.0],
????????????????[2.0,?0.0,?1.0,?1.0],
????????????????[1.5,?2.5,?1.0,?0.0]])
n?=?4
M?=?np.logical_and.reduce(np.mod(X,?1)?==?0,?axis=-1)
M?&=?(X.sum(axis=-1)?==?n)
print(X[M])
(提示: np.percentile)
#?Author:?Jessica?B.?Hamrick
X?=?np.random.randn(100)?#?random?1D?array
N?=?1000?#?number?of?bootstrap?samples
idx?=?np.random.randint(0,?X.size,?(N,?X.size))
means?=?X[idx].mean(axis=1)
confint?=?np.percentile(means,?[2.5,?97.5])
print(confint)
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。