1、如果在数组中出现np.nan或者np.inf, 而又想要把这些值用其他值代替, 该如何操作?
# 用-1代替nan值和inf值
missing_bool = np.isnan(arr2)
arr2[missing_bool] = -1
2、如果要求数组的行或列的最小值,使用np.amin函数
import numpy as np
arr1 = np.arange(1,10).reshape([3, 3])
print(arr1)
print('Column wise min: ', np.amin(arr1, axis=0))
print('Row wise min: ', np.amin(arr1, axis=1))
3、对数组的每个元素进行累加,得到一维数组,一维数组的大小与二维数组相同
print(np.cumsum(arr1))
#> [ 1 3 6 10 15 21 28 36 45]
4、数组的扁平化:flatten()和ravel()
flatten处理后的数组是父数组的引用,因此新数组的任何变化也会改变父数组,因其未用复制的方式构建数组,内存使用效率高,ravel通过复制的方式构建新数组。
b1 = arr1.flatten()
b1[0] = 100
print(arr1)
# [[1 2 3]
[4 5 6]
[7 8 9]]
b2 = arr1.ravel()
b2[0] = 101
print(arr1)
# [[101 2 3]
[ 4 5 6]
[ 7 8 9]]
5、生成序列数sequences,重复数repetitions和随机数random
print(np.arange(10, 0, -1))
# [10 9 8 7 6 5 4 3 2 1]
print(np.linspace(start=1, stop=50, num=10, dtype=int))
# [ 1 6 11 17 22 28 33 39 44 50]
a = [1, 2, 3]
#重复数组a两次
print('Tile: ', np.tile(a, 2))
#重复数组a每项两次
print('Repeat: ', np.repeat(a, 2))
#> ('Tile: ', array([1, 2, 3, 1, 2, 3]))
#> ('Repeat: ', array([1, 1, 2, 2, 3, 3]))
#从给定的列表等概率抽样10次
print(np.random.choice(['a', 'e', 'i', 'o', 'u']))
6、如何得到数组独特的项和个数
np.unique函数去除数组中重复的元素,设置return_counts参数为True,得到数组每一个项的个数。
np.random.seed(100)
arr_rand = np.random.randint(0, 10, size=10)
print(arr_rand)
uniqs, counts = np.unique(arr_rand, return_counts=True)
print('Unique items: ', uniqs)
print('Counts: ', counts)
[8 8 3 7 7 0 4 2 5 2]
('Unique items: ', array([0, 2, 3, 4, 5, 7, 8]))
('Counts: ', array([1, 2, 1, 1, 1, 2, 2]))