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


Z += np.arange(5)
print(Z)
30 、 创建生成器函数 , 生成 10 个整数并使用它来构建一个数组
def generate():
for x in xrange(10):
yield x
Z = np.fromiter(generate()dtype=floatcount=-1)
print(Z)
31、 创建一个大小为 10 的向量 , 其值范围为 0 到 1(均不包括在内)
Z = np.linspace(0112endpoint=True)[1:-1

print(Z)
32、 创建一个大小为 10 的随机向量并对其进行排序
Z = np.random.random(10)
Z.sort()
print(Z)
33、 如何比 np.sum 更快地求和一个小数组?
# Author: Evgeni Burovski
Z = np.arange(10)
np.add.reduce(Z)
34、 考虑检查两个随机数组 A 和 B是否相等
A = np.random.randint(025)
B = np.random.randint(025)
equal = np.allclose(AB)
print(equal)
35、 使数组不可变(只读)
Z = np.zeros(10)
Z.flags.writeable = False
Z[0
= 1
36、 一个表示笛卡尔坐标的随机 10x2 矩阵 , 将它们转换为极坐标
XY = Z[:0
Z[:1

R = np.sqrt(X**2+Y**2)
T = np.arctan2(YX)
print(R)
print(T)
37、 创建大小为 10 的随机向量并将最大值替换为 0
Z = np.random.random(10)
Z[Z.argmax()
= 0
print(Z)
38、 创建一个结构化数组 , 其中 x 和坐标覆盖 [01
x[01
区域
Z = np.zeros((1010) [('x'float)('y'float)
)
Z['x'
Z['y'
= np.meshgrid(np.linspace(0110)
np.linspace(0110))print(Z)
39、 给定两个数组 X 和 Y , 构造柯西矩阵 C (Cij = 1/(xi yj))
# Author: Evgeni Burovski
X = np.arange(8)
Y = X + 0.5
C = 1.0 / np.subtract.outer(X Y)
print(np.linalg.det(C))
40 、 打印每个 numpy 标量类型的最小和最大可表示值
for dtype in [np.int8 np.int32 np.int64
:
print(np.iinfo(dtype).min)
print(np.iinfo(dtype).max)
for dtype in [np.float32 np.float64
:
print(np.finfo(dtype).min)
print(np.finfo(dtype).max)
print(np.finfo(dtype).eps)
41、 如何打印数组的所有值?
np.set_printoptions(threshold=np.nan)
Z = np.zeros((2525))
print(Z)
42、 如何在数组中找到最接近的值(到给定的标量)?
Z = np.arange(100)
v = np.random.uniform(0100)
index = (np.abs(Z-v)).argmin()
print(Z[index
)
43 、 创建表示位置 (xy) 和颜色 (rgb) 的结构化数组
Z = np.zeros(10 [ ('position' [ ('x' float 1)
('y' float 1)
)
('color' [ ('r' float 1)
('g' float 1)
('b' float 1)
)
)print(Z)
44、 逐点查找形状为 (1002) 的随机向量表示坐标的距离
Z = np.random.random((102))
XY = np.atleast_2d(Z[:0
) np.atleast_2d(Z[:1
)
D = np.sqrt( (X-X.T)**2 + (Y-Y.T)**2)
print(D)
# Much faster with scipy
import scipy
# Thanks Gavin Heverly-Coulson (#issue 1)
import scipy.spatial
Z = np.random.random((102))
D = scipy.spatial.distance.cdist(ZZ)
print(D)
45 、 如何将浮点(32位)数组转换为整数(32位)?
Z = np.arange(10 dtype=np.int32)
Z = Z.astype(np.float32 copy=False)
46 、 读取下面格式的文件?
# -------------
12345
678
91011
# -------------
Z = np.genfromtxt(\"missing.dat\" delimiter=\"\")
47 、 numpy 数组的枚举可以用什么其他形式表示?
Z = np.arange(9).reshape(33)
for index value in np.ndenumerate(Z):
print(index value)
for index in np.ndindex(Z.shape):
48、生成一个二维类高斯数组
X Y = np.meshgrid(np.linspace(-1110) np.linspace(-1110))
D = np.sqrt(X*X+Y*Y)
sigma mu = 1.0 0.0
G = np.exp(-( (D-mu)**2 / ( 2.0 * sigma**2 ) ) )
print(G)
49 、 如何在二维数组中随机放置 p 个元素?
# Author: Divakar
n = 10
p = 3
Z = np.zeros((nn))
np.put(Z np.random.choice(range(n*n) p replace=False)1)
50、矩阵减去每一行的均值
# Author: Warren Weckesser
X = np.random.rand(5 10)
# Recent versions of numpy