numpy回顾

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)
  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值