黑客|90个Numpy的有用的代码片段( 三 )


Y = X - X.mean(axis=1 keepdims=True)
# Older versions of numpy
Y = X - X.mean(axis=1).reshape(-1 1)
51、如何排序数组的第n列?
# Author: Steve Tjoa
Z = np.random.randint(010(33))
print(Z)
print(Z[Z[:1
.argsort()
)
52、如何判断一个给定的2D数组有空列?
# Author: Warren Weckesser
Z = np.random.randint(03(310))
print((~Z.any(axis=0)).any())
53、在数组中找到与给定值最近的值
Z = np.random.uniform(0110)
z = 0.5
m = Z.flat[np.abs(Z - z).argmin()

print(m)
54、创建一个具有name属性的数组类
class NamedArray(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 = NamedArray(np.arange(10) \"range_10\")
print (Z.name)
55、一个给定的向量 , 如何给第二个向量索引的每个元素加1(包含重复索引)?
# Author: Brett Olsen
Z = np.ones(10)
I = np.random.randint(0len(Z)20)
Z += np.bincount(I minlength=len(Z))
print(Z)
56、如何积加一个向量(X)的元素到一个数组(F)基于索引列表(I)?
# Author: Alan G Isaac
X = [123456

I = [139341

F = np.bincount(IX)
print(F)
57、一个(wh3)图像(dtype=ubyte) , 计算唯一颜色的数量
# Author: Nadav Horesh
wh = 1616
I = np.random.randint(02(hw3)).astype(np.ubyte)
F = I[...0
*256*256 + I[...1
*256 +I[...2

n = len(np.unique(F))
print(np.unique(I))
58、考虑一个四维数组 , 如何同时得到最后两个轴的和?
A = np.random.randint(010(3434))
sum = A.reshape(A.shape[:-2
+ (-1)).sum(axis=-1)
print(sum)
59、一个一维向量D , 使用子集相同大小的向量S来计算D子集的平均值?
# Author: Jaime Fernández del Río
D = np.random.uniform(01100)
S = np.random.randint(010100)
D_sums = np.bincount(S weights=D)
D_counts = np.bincount(S)
D_means = D_sums / D_counts
print(D_means)
60 、 如何获得点积的对角线?
# Author: Mathieu Blondel
# Slow version
np.diag(np.dot(A B))
# Fast version
np.sum(A * B.T axis=1)
# Faster version
np.einsum(\"ijji->i\" A B).
61、 向量 [1 2 3 4 5
, 构建一个新向量 , 每个值之间有 3 个连续的0?
# Author: Warren Weckesser
Z = np.array([12345
)
nz = 3
Z0 = np.zeros(len(Z) + (len(Z)-1)*(nz))
Z0[::nz+1
= Z
print(Z0)
62、 维度为 (553) 的数组 , 将它乘以一个维度为 (55) 的数组?
A = np.ones((553))
B = 2*np.ones((55))
print(A * B[::None
)
63、 交换数组的两行?
# Author: Eelco Hoogendoorn
A = np.arange(25).reshape(55)
A[[01

= A[[10


print(A)
64、 一组描述 10 个三角形(具有共享顶点)的 10 个三元组 , 找到组成所有三角形的唯一线段集
# Author: Nicolas P. Rougier
faces = np.random.randint(0100(103))
F = np.roll(faces.repeat(2axis=1)-1axis=1)
F = F.reshape(len(F)*32)
F = np.sort(Faxis=1)
G = F.view( dtype=[('p0'F.dtype)('p1'F.dtype)
)
G = np.unique(G)
print(G)
65 、 一个 bincount数组 C , 如何生成一个数组 A 使得
np.bincount(A) == C?
# Author: Jaime Fernández del Río
C = np.bincount([1123446
)
A = np.repeat(np.arange(len(C)) C)
print(A)
66、 使用数组上的滑动窗口计算平均值?
# 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))
67、 一维数组 Z , 构建一个二维数组 , 其第一行是 (Z[0
Z[1
Z[2
) , 随后的每一行移动 1(最后一行应该是 (Z[3
Z[2
Z[1
)
# Author: Joe Kington / Erik Rigtorp