*8:*创建二维等差数组:np.arange(6).reshape(2, 3)
9: 创建单位矩阵(二维数组):np.eye(3)
21:矩阵乘法运算np.mat(A) * np.mat(B)
52:使用数字 0 将一个全为 1 的 5x5 二维数组包围:
Z = np.ones((5, 5))
Z = np.pad(Z, pad_width=1, mode='constant', constant_values=0)
Z
59: 使用五种不同的方法去提取一个随机数组的整数部分:
Z = np.random.uniform(0, 10, 10)
print("原始值: ", Z)
print("方法 1: ", Z - Z % 1)
print("方法 2: ", np.floor(Z))
print("方法 3: ", np.ceil(Z)-1)
print("方法 4: ", Z.astype(int))
print("方法 5: ", np.trunc(Z))
63:创建一个长度为 5 的一维数组,并将其中最大值替换成 0:
Z = np.random.random(5)
print("原数组: ", Z)
a
a=np.random.random(5)
print(a)
a[a.argmax()]=0
a
Z = np.random.uniform(0, 1, 20)
print("随机数组: \n", Z)
z = 0.5
m = Z.flat[np.abs(Z - z).argmin()]
m
Z = np.random.randint(0, 10, 50)
print("随机一维数组:", Z)
np.bincount(Z).argmax()
随机一维数组: [0 8 7 1 2 6 2 2 8 7 9 7 5 9 7 3 9 7 6 5 7 4 4 9 1 5 5 6 1 1 9 9 6 9 1 1 5
2 6 5 6 4 8 6 2 2 1 5 6 1]
1
p = 3
Z = np.zeros((5, 5))
np.put(Z, np.random.choice(range(5*5), p, replace=False), 1)
Z
array([[0., 0., 0., 0., 1.],
[0., 1., 0., 0., 0.],
[0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0.],
[0., 1., 0., 0., 0.]])
X = np.random.rand(3, 3)
print(X)
Y = X - X.mean(axis=1, keepdims=True)
Y
copy
[[0.94481763 0.71885257 0.64564054]
[0.26427321 0.44115571 0.80828852]
[0.6223677 0.94623723 0.14231897]]
array([[ 0.17504738, -0.05091768, -0.12412971],
[-0.24029927, -0.06341677, 0.30371604],
[ 0.05205973, 0.37592927, -0.427989 ]])
Z = np.random.random((5, 5))
print(Z)
np.set_printoptions(precision=2)
Z
a = np.array([1 + 2j, 3 + 4j, 5 + 6j])
print("实部:", a.real)
print("虚部:", a.imag)
copy
实部: [1. 3. 5.]
虚部: [2. 4. 6.]
matrix = np.array([[1., 2.], [3., 4.]])
inverse_matrix = np.linalg.inv(matrix)
# 验证原矩阵和逆矩阵的点积是否为单位矩阵
assert np.allclose(np.dot(matrix, inverse_matrix), np.eye(2))
inverse_matrix
copy
array([[-2. , 1. ],
[ 1.5, -0.5]])
修改第 2 行与第 2 列对应的值 3.0 → 2.0
df3.iat[1, 1] = 2 # 索引序号从 0 开始,这里为 1, 1
df3
df5 = df3.copy()
print(df5)
df5.dropna(how='any') # 任何存在 NaN 的行都将被删除
46:DataFrame 按指定列对齐:
left = pd.DataFrame({'key': ['foo1', 'foo2'], 'one': [1, 2]})
right = pd.DataFrame({'key': ['foo2', 'foo3'], 'two': [4, 5]})
print(left)
print(right)
按照 key 列对齐连接,只存在 foo2 相同,所以最后变成一行
pd.merge(left, right, on='key')
copy
key one
0 foo1 1
1 foo2 2
key two
0 foo2 4
1 foo3 5
pandas的作用如下:
1:文件操作
2:时间序列
3:多重索引
dti = pd.date_range(start='2018-01-01', end='2018-12-31', freq='D')
s = pd.Series(np.random.rand(len(dti)), index=dti)
s
```python
2018-01-01 0.991481
2018-01-02 0.988274
2018-01-03 0.013988
2018-01-04 0.143980
2018-01-05 0.951515
...
2018-12-27 0.994144
2018-12-28 0.892863
2018-12-29 0.005812
2018-12-30 0.307693
2018-12-31 0.768305
df3[df3['animal'].isin(['cat', 'dog'])]
df.loc[df2.index[[3, 4, 8]], ['animal', 'age']]
**72.DataFrame 多值替换:
将 priority 列的 yes 值替换为 True,no 值替换为 False。
df['priority'].map({'yes': True, 'no': False})
copy
a True
b True
c False
d True
e False
f False
g False
h True
i False
j False
Name: priority, dtype: bool
**
df = pd.DataFrame({'A': list('aaabbcaabcccbbc'),
'B': [12, 345, 3, 1, 45, 14, 4, 52, 54, 23, 235, 21, 57, 3, 87]})
print(df)
df.groupby('A')['B'].nlargest(3).sum(level=0)
copy
A B
0 a 12
1 a 345
2 a 3
3 b 1
4 b 45
5 c 14
6 a 4
7 a 52
8 b 54
9 c 23
10 c 235
11 c 21
12 b 57
13 b 3
14 c 87
A
a 409
b 156
c 345
Name: B, dtype: int64