别整天 “学妹/前女友”了,花2小时整理了Numpy测试习题100道,做个测验吧!(四)

简介: 别整天 “学妹/前女友”了,花2小时整理了Numpy测试习题100道,做个测验吧!(四)

42. 如何判断两和随机数组相等 (★★☆)

(提示: np.allclose, np.array_equal)


A = np.random.randint(0, 2, 5)
B = np.random.randint(0, 2, 5)
# 假设array的形状(shape)相同和一个误差容限(tolerance)
equal = np.allclose(A,B)
print(equal)
# 检查形状和元素值,没有误差容限(值必须完全相等)
equal = np.array_equal(A,B)
print(equal)


43. 把数组变为只读 (★★☆)

(提示: flags.writeable)


Z = np.zeros(5)
Z.flags.writeable = False
Z[0] = 1


44. 将一个10x2的笛卡尔坐标矩阵转换为极坐标 (★★☆)

(提示: np.sqrt, np.arctan2)


Z = np.random.random((10, 2))
X, Y = Z[:, 0], Z[:, 1]
R = np.sqrt(X**2 + Y**2)
T = np.arctan2(Y, X)
print (R)
print (T)


45. 创建一个大小为10的随机向量并且将该向量中最大的值替换为0(★★☆)

(提示: argmax)


Z = np.random.random(10)
Z[Z.argmax()] = 0
print (Z)


46. 创建一个结构化数组,其中x和y坐标覆盖[0, 1]x[1, 0]区域 (★★☆)

(提示: np.meshgrid)


Z = np.zeros((5, 5), [('x', float), ('y', float)])
Z['x'], Z['y'] = np.meshgrid(np.linspace(0, 1, 5), np.linspace(0, 1, 5))
print (Z)


47. 给定两个数组X和Y,构造柯西(Cauchy)矩阵C (C i j = 1 x i − y j C_{ij}=\frac{1}{x_i-y_j}C

ij

=

x

i

−y

j

1

) (★★☆)

(提示: np.subtract.outer)


# Author: Evgeni Burovski
X = np.arange(8)
Y = X + 0.5
C = 1.0 / np.subtract.outer(X, Y)
print (C)


48. 打印每个numpy 类型的最小和最大可表示值 (★★☆)

(提示: np.iinfo, np.finfo, eps)


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)


49. 如何打印数组中所有的值?(★★☆)

(提示: np.set_printoptions)

np.set_printoptions(threshold=np.nan)
Z = np.zeros((16,16))
print(Z)


50. 如何在数组中找到与给定标量接近的值? (★★☆)

(提示: argmin)


Z = np.arange(100)
v = np.random.uniform(0, 100)
index = (np.abs(Z-v)).argmin()
print(Z[index])


51. 创建表示位置(x, y)和颜色(r, g, b, a)的结构化数组 (★★☆)

(提示: dtype)


Z = np.zeros(10, [('position', [('x', float, 1), 
                                ('y', float, 1)]),
                  ('color',    [('r', float, 1), 
                                ('g', float, 1), 
                                ('b', float, 1)])])
print (Z)


52. 思考形状为(100, 2)的随机向量,求出点与点之间的距离 (★★☆)

(提示: 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)


53. 如何将类型为float(32位)的数组类型转换位integer(32位)? (★★☆)

(提示: astype(copy=False))


Z = np.arange(10, dtype=np.int32)
Z = Z.astype(np.float32, copy=False)
print(Z)


54. 如何读取下面的文件? (★★☆)

(提示: 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)


55. numpy数组枚举(enumerate)的等价操作? (★★☆)

(提示: 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])


相关文章
|
机器学习/深度学习 数据挖掘 测试技术
软件测试|Python科学计算神器numpy教程(十二)
软件测试|Python科学计算神器numpy教程(十二)
|
2月前
|
Python
numpy | 插入不定长字符数组测试OK
本文介绍了如何在numpy中创建和操作不定长字符数组,包括插入和截断操作的测试。
|
6月前
|
存储 C++ Python
学会使用 NumPy:基础、随机、ufunc 和练习测试
NumPy是Python的数值计算库,提供高效的多维数组对象`ndarray`和相关运算函数。它比Python列表快50倍,广泛用于数据科学,其中数组操作至关重要。要创建数组,可以使用`np.array()`。安装NumPy只需运行`pip install numpy`,导入时常用`import numpy as np`作为别名。要检查版本,使用`np.__version__`。
59 0
|
测试技术 数据处理 Python
软件测试|Python科学计算神器numpy教程(十)
软件测试|Python科学计算神器numpy教程(十)
|
测试技术 索引 Python
软件测试|Python科学计算神器numpy教程(七)
软件测试|Python科学计算神器numpy教程(七)
|
数据可视化 数据挖掘 测试技术
软件测试|Python科学计算神器numpy教程(三)
软件测试|Python科学计算神器numpy教程(三)
|
测试技术 Serverless Python
软件测试|Python科学计算神器numpy教程(十一)
软件测试|Python科学计算神器numpy教程(十一)
|
机器学习/深度学习 测试技术 数据处理
软件测试|Python科学计算神器numpy教程(九)
软件测试|Python科学计算神器numpy教程(九)
|
测试技术 数据处理 Python
软件测试|Python科学计算神器numpy教程(八)
软件测试|Python科学计算神器numpy教程(八)
|
数据挖掘 测试技术 Python
软件测试|Python科学计算神器numpy教程(六)
软件测试|Python科学计算神器numpy教程(六)
下一篇
无影云桌面