1. 创建一个 5x5 的二维数组,其中边界值为1,其余值为0;
import numpy as np
num=np.ones([5,5],dtype=int)
num[1:-1,1:-1] =0 #将二维数组的第二行到倒数第二行,第二列到倒数第二列中的数全部变为0
print(num)
创建一个 10x10 的二维数组,并使得 1 和 0 沿对角线间隔放置, 效果如下:
array([[0, 1, 0, 1, 0, 1, 0, 1, 0, 1],
[1, 0, 1, 0, 1, 0, 1, 0, 1, 0],
[0, 1, 0, 1, 0, 1, 0, 1, 0, 1],
[1, 0, 1, 0, 1, 0, 1, 0, 1, 0],
[0, 1, 0, 1, 0, 1, 0, 1, 0, 1],
[1, 0, 1, 0, 1, 0, 1, 0, 1, 0],
[0, 1, 0, 1, 0, 1, 0, 1, 0, 1],
[1, 0, 1, 0, 1, 0, 1, 0, 1, 0],
[0, 1, 0, 1, 0, 1, 0, 1, 0, 1],
[1, 0, 1, 0, 1, 0, 1, 0, 1, 0]])
import numpy as np
z = np.zeros((10,10),dtype=int)
z[1::2,::2] = 1 #从第二行开始,每隔两行并且从第一列开始,每隔两列的数字等于1
z[::2,1::2] = 1 #从第一行开始,每隔两行并且从第二列开始,每隔两列的数字等于1
print(z)
创建一个 0-10 的一维数组,并将 (1, 9] 之间的数全部反转成负数, 效果如下:array([ 0, 1, -2, -3, -4, -5, -6, -7, -8, -9, 10])
import numpy as np
ss=np.arange(11)
ss[(ss>1) & (ss<=9)] *=-1
print(ss)
创建一个 5x5 的矩阵,其中每行的数值范围从 1 到 5, 效果如下:
array([[1., 2., 3., 4., 5.],
[1., 2., 3., 4., 5.],
[1., 2., 3., 4., 5.],
[1., 2., 3., 4., 5.],
[1., 2., 3., 4., 5.]])
import numpy as np
ss=np.zeros((5,5))
ss[::] +=np.arange(1,6)
print(ss)
创建一个长度为 5 的一维数组,并将其中最大值替换成 0
import numpy as np
ss=np.array([13,27,45,24,35])
ss[ss.argmax()]=0
print(ss)
将二维数组的前两行进行顺序交换, 效果如下:
-
交换前
[[ 0 1 2 3 4]
[ 5 6 7 8 9]
[10 11 12 13 14]
[15 16 17 18 19]
[20 21 22 23 24]] -
交换后
[[ 5 6 7 8 9]
[ 0 1 2 3 4]
[10 11 12 13 14]
[15 16 17 18 19]
[20 21 22 23 24]]import numpy as np ss=np.array([[0 ,1 ,2 ,3 ,4], [ 5 ,6 ,7 ,8 ,9], [10 ,11 ,12 ,13 ,14], [15 ,16 ,17 ,18 ,19], [20 ,21 ,22 ,23 ,24],]) ss[[0,1]]=ss[[1,0]] print(ss)
找出给定一维数组中非 0 元素的位置索引
import numpy as np
ss = np.nonzero([1,0,2,0,3,0,4,0])
print(ss)
找出数组中缺失值的总数及所在位置, 案例如下:
array([[0.8 , 0.25, 0.74, 0.05, 0.24, 0.16, 0.63, 0.62, 0.89, 0.85],
[0.61, 0.76, 0.26, 0.3 , 0.82, 0.74, 0.96, 0.64, 0.58, 0.06],
[0.78, 0.38, 0.19, 0.68, 0.75, 0.91, 0.13, 0.24, 0.98, 0.21],
[0.47, 0.12, 0.34, 0.06, 0.46, 0.69, 0.1 , np.nan, 0.27, 0.92],
[0.83, 0.01, 0.63, 0.15, 0.52, 0.52, 0.02, 0. , 0.74, 0.59],
[0.56, 0.66, 0.15, np.nan, 0.26, 0.88, 0.15, 0.57, 0.61, 0.35],
[0.33, 0.58, 0.06, 0.94, 0.58, 0.53, 0.97, 0.02, 0.32, np.nan],
[0.84, 0.71, 0.65, 0.42, 0.44, 0.96, 0.37, 0.65, 0.6 , 0.17],
[0.04, 0.94, 0.92, np.nan, 0.7 , 0.38, 0.28, 0.45, 0.35, 0.93],
[0.38, 0.69, 0.43, 0.01, 0.67, 0.46, 0.73, 0.99, 0.94, 0.45]])
缺失值总数:
4
缺失值索引:
(array([3, 5, 6, 8]), array([7, 3, 9, 3]))
import numpy as np
import pandas as pd
ss=np.array([[ 0.8, 0.25, 0.74, 0.05, 0.24, 0.16, 0.63, 0.62, 0.89, 0.85],
[0.61, 0.76, 0.26, 0.3 , 0.82, 0.74, 0.96, 0.64, 0.58, 0.06],
[0.78, 0.38, 0.19, 0.68, 0.75, 0.91, 0.13, 0.24, 0.98, 0.21],
[0.47, 0.12, 0.34, 0.06, 0.46, 0.69, 0.1 , np.nan,0.27, 0.92],
[0.83, 0.01, 0.63, 0.15, 0.52, 0.52, 0.02, 0.0 , 0.74, 0.59],
[0.56, 0.66, 0.15, np.nan,0.26, 0.88, 0.15, 0.57, 0.61, 0.35],
[0.33, 0.58, 0.06, 0.94, 0.58, 0.53, 0.97, 0.02, 0.32, np.nan],
[0.84, 0.71, 0.65, 0.42, 0.44, 0.96, 0.37, 0.65, 0.6 , 0.17],
[0.04, 0.94, 0.92, np.nan, 0.7, 0.38, 0.28, 0.45, 0.35, 0.93],
[0.38, 0.69, 0.43, 0.01, 0.67, 0.46, 0.73, 0.99, 0.94, 0.45]])
print(np.where(np.isnan(ss)))
找出两个一维数组中相同的元素
import numpy as np
z1 = np.random.randint(0,10,10)
z2 = np.random.randint(0,10,10)
print('z1的数组:',z1)
print('z2的数组:',z2)
print(np.intersect1d(z1,z2))
使用 NumPy 打印昨天、今天、明天的日期
import numpy as np
yesterday = np.datetime64('today', 'D') - np.timedelta64(1, 'D') #'D'代表时间精确到天
today = np.datetime64('today', 'D')
tomorrow = np.datetime64('today', 'D') + np.timedelta64(1, 'D')
print('yesterday:',yesterday)
print('today:',today)
print('tomorrow:',tomorrow)
使用五种不同的方法去提取一个随机数组的整数部分
import numpy as np
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) #函数返回输入值的上限,即对于输入 x ,返回最小的整数 i ,使得 i> = x。
print('方法4:',z.astype(int)) #将数据类型转换为整型,并不大于这个数
print('方法5:',np.trunc(z)) #将传入的列表对其整数部分提取出来
创建一个长度为 5 的等间隔一维数组,其值域范围从 0 到 1,但是不包括 0 和 1
import numpy as np
ss= np.linspace(0,1,6,endpoint=False)[1:]
print(ss)
创建一个长度为10的随机一维数组,并将其按升序排序
import numpy as np
dd = np.random.random(10)
dd.sort()
print(dd)
创建一个 3x3 的二维数组,并将列按升序排序
import numpy as np
ss = np.array([[7,4,3],[3,1,2],[4,2,6]])
print('原始数组:\n', ss)
ss.sort(axis=0)
print(ss)
打印每个 NumPy 标量类型的最小值和最大值
import numpy as np
for dtype in [np.int8, np.int32, np.int64]:
print("The minimum value of {}: ".format(dtype), np.iinfo(dtype).min)
print("The maximum value of {}: ".format(dtype),np.iinfo(dtype).max)
for dtype in [np.float32, np.float64]:
print("The minimum value of {}: ".format(dtype),np.finfo(dtype).min)
print("The maximum value of {}: ".format(dtype),np.finfo(dtype).max)
将 float32 转换为整型
import numpy as np
dd = np.arange(10, dtype=np.float32)
dd = dd.astype(np.int32,copy=False)
print(dd)
将随机二维数组按照第 3 列从上到下进行升序排列
import numpy as np
ss = np.random.randint(0,10,(5,5))
print('排序前:\n',ss)
print(ss[ss[:,2].argsort()])
从随机一维数组中找出距离给定数值(0.5)最近的数
import numpy as np
z = np.random.uniform(0,1,20)
print('random array: \n',z)
z1 = 0.5
m = z.flat[np.abs(z - z1).argmin()] #flat会深度遍历数组,
print(m)
找出随机一维数组中出现频率最高的值
import numpy as np
aa = np.random.randint(1,10,10)
print(aa)
print(np.bincount(aa).argmax())
找出给定一维数组中非 0 元素的位置索引
import numpy as np
aa = np.array([1,2,3,0,4,5,0])
print(np.nonzero(aa))
对于给定的 5x5 二维数组,在其内部随机放置 p 个值为 1 的数
import numpy as np
p = 3
ss = np.zeros((5, 5))
# 25表示从ss中抽取25个数,p表示要从中抽取几个数,replace表示是否有放回的取出其中的数
np.put(ss, np.random.choice(25, p, replace=False), 1)
print(ss)
对于随机的 3x3 二维数组,减去数组每一行的平均值
import numpy as np
X = np.random.rand(3, 3)
print(X)
Y = X - X.mean(axis=1, keepdims = True)
print(Y)
获得二维数组点积结果的对角线数组
import numpy as np
A = np.random.uniform(0, 1, (3, 3))
B = np.random.uniform(0, 1, (3, 3))
# print(A)
#
print(np.dot(A, B))
# 方法1:较慢
print(np.diag(np.dot(A, B)))
## 方法2:较快
print(np.sum(A * B.T, axis=1))
## 方法3:快
print(np.einsum("ij, ji->i", A, B))
找到随机一维数组中前 p 个最大值
import numpy as np
Z = np.random.randint(1, 100, 100)
print(Z)
p = 5
print(Z[np.argsort(Z)[-p:]]) ## 默认升序排列
计算随机一维数组中每个元素的 4 次方数值
import numpy as np
aa = np.random.random((5,5))
print(aa)
np.power(aa,4)
#设置矩阵的小数位
np.set_printoptions(precision=2)
print(aa)