numpy 热身练习
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
array1 = np.array([42, 45, 62, 56, 35, 79, 67, 74, 30, 28, 54])
array2 = np.array([65, 36, 123, 25, 45, 32, 26, 78, 57, 51, 34])
array3 = np.array([82, 36, 21, 23, 25, 43, 52, 59, 60, 76, 95])
print('均值', array1.mean())
print('方差', array1.var())
array3[0], array3[1], array3[-2]
array3[[0, 1, -2]]
array3.take([0, 1, -2])
array3[array3 > 50]
array3[(array3 > 50) | (array3 % 2 == 0)]
np.append(array3, 1000)
np.insert(array3, 0, 1000)
array4 = np.array([[1, 1, 1], [2, 3, 4], [5, 5, 6]])
array4
array4 + 5
array4 * 5
array4 / 5
array4 ** 5
array5 = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
array6 = np.array([[1, 1, 1], [2, 2, 2], [3, 3, 3]])
array5 + array6
array5 ** array6
"""
当两个数组形状不一致时,如果两个数组的后缘维度(shape属性从后往前看)相同或者其中一个的后缘维度为1,那么这个时候可以通过广播机制让两个数组的形状趋于一致,这种情况是可以进行运算的;如果不能应用广播机制,那么两个数组没有办法进行运算。
"""
array7 = np.array([4, 4, 4])
array7
array5 + array7
array10 = np.array([1, 2, 3, np.nan, 4, np.nan, np.inf])
np.isnan(array10)
np.isinf(array10)
x = np.linspace(-2 * np.pi, 2 * np.pi, 60)
y1, y2 = np.sin(x),np.cos(x)
plt.figure(figsize=(8, 4))
plt.plot(x, y1, color='#0000ff', marker='x')
plt.plot(x, y2, color='coral', marker='o')
a = np.array([0.1, 0.2, 0.3])
b = np.array([0.1, 0.2, 0.3000001])
a == b
np.all(a == b)
np.allclose(a, b)
array11 = np.array([1, 4, 9])
array12 = np.array([2, 3, 5])
np.maximum(array11, array12)
np.minimum(array11, array12)
v1 = np.array([3, 1])
v2 = np.array([-1, 2])
v1 + v2
np.inner(v1, v2) / (np.linalg.norm(v1) * np.linalg.norm(v2))
np.inner(v1, v2)
np.dot(v1, v2)
np.cross(v1, v2)
array13 = np.array([12, 13, 12, 15, 20, 20, 17])
array13
np.unique(array13)
array5
array6
np.hstack((array5, array6))
np.vstack((array5, array6))
np.stack((array5, array6), axis=0)
np.stack((array5, array6), axis=1)
np.concatenate((array5, array6))
np.argwhere(array5)
array14 = np.arange(1, 10)
array14
np.extract(array14 % 3 == 0, array14)
np.select([array14 < 3, array14 > 5], [array14, array14 ** 2])
np.where(array14 < 5, array14, array14 * 10)
np.flip(array5)
def fib(counts):
a, b = 0, 1
for _ in range(counts):
a, b = b, a + b
yield a
iter_obj = fib(20)
iter_obj
array15 = np.fromiter(iter_obj, dtype=np.int64)
array15
array16 = np.repeat([3, 4], 10)
array16
"""
array([3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4])
"""
array17 = np.repeat([[3, 4]], 3, axis=0)
array17
"""
array([[3, 4],
[3, 4],
[3, 4]])
"""
array18 = np.repeat([[3, 4]], [2, 3], axis=1)
array18
"""
array([[3, 3, 4, 4, 4]])
"""
np.roll(array14, 3)
"""
array([7, 8, 9, 1, 2, 3, 4, 5, 6])
"""
np.roll(array14, -3)
"""
array([4, 5, 6, 7, 8, 9, 1, 2, 3])
"""
array19 = np.random.randint(60, 101, 15)
array20 = np.resize(array19, (4, 4))
array20
np.place(array20, array20 < 80, 59)
m1 = np.matrix(array5)
m1
m1.T
np.linalg.det(m1)
m1.I
m2 = np.matrix('1 1 1; 2 2 2; 3 3 3')
m2
np.linalg.det(m2)
m2.A
m2.A1
m3 = np.array([[1, 0, 2], [-1, 3, 1]])
m4 = np.array([[3, 1], [2, 1], [1, 0]])
m5 = m3 @ m4
"""
array([[5, 1],
[4, 2]])
"""
np.linalg.inv(m5)