numpy总结

举报
北山啦 发表于 2021/05/26 15:21:32 2021/05/26
【摘要】 Python从入门到精通2–numpy总结 文章目录 1.查看numpy版本2.创建十个全为0的一维数组3.修改数据类型为整数4.创建固定步长的数5.列表创建数组6.创建全是1的矩阵7.创建布尔类型的True8.创建等差数列9.创建等差数列10.创建3x3矩阵11.创建3x3矩阵12.将第五题的result修改为3x3矩阵13.对上一题生成的re...

Python从入门到精通2–numpy总结

在这里插入图片描述

文章目录

1.查看numpy版本

import numpy as np
print(np.__version__)

  
 
  • 1
  • 2
1.19.2

  
 
  • 1

2.创建十个全为0的一维数组

np.zeros(10)

  
 
  • 1
array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])

  
 
  • 1

3.修改数据类型为整数

np.zeros(10,dtype = 'int')

  
 
  • 1
array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0])

  
 
  • 1

4.创建固定步长的数

np.arange(0,100,5)

  
 
  • 1
array([ 0,  5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95])

  
 
  • 1
  • 2

5.列表创建数组

List = [1,2,3,4,5,6,7,8,9]
result = np.array(List)
result

  
 
  • 1
  • 2
  • 3
array([1, 2, 3, 4, 5, 6, 7, 8, 9])

  
 
  • 1

6.创建全是1的矩阵

#方法1
np.ones((3,3))
#方法2
np.array([[ 1., 1., 1.], [ 1., 1., 1.], [ 1., 1., 1.]])

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
array([[1., 1., 1.], [1., 1., 1.], [1., 1., 1.]])

  
 
  • 1
  • 2
  • 3

7.创建布尔类型的True

np.full((2,2), True, dtype=bool)

  
 
  • 1
array([[ True,  True], [ True,  True]])

  
 
  • 1
  • 2

8.创建等差数列

备注:从5开始,50结束,共10个数据

np.linspace(start=5,stop=50,num=10)

  
 
  • 1
array([ 5., 10., 15., 20., 25., 30., 35., 40., 45., 50.])

  
 
  • 1

9.创建等差数列

np.arange(start = 5, stop = 55, step = 5,dtype = 'int32')

  
 
  • 1
array([ 5, 10, 15, 20, 25, 30, 35, 40, 45, 50])

  
 
  • 1

10.创建3x3矩阵

备注:矩阵元素均为0—10之间的随机数

np.random.randint(0,10,(3,3))

  
 
  • 1
array([[5, 3, 3], [2, 0, 4], [7, 6, 2]])

  
 
  • 1
  • 2
  • 3

11.创建3x3矩阵

备注:矩阵元素均为服从标准正态分布的随机数

np.random.randn(3, 3)

  
 
  • 1
array([[ 0.77191714,  1.99485092,  0.36574655], [-2.35963788, -0.18879237,  1.00267285], [-1.20021396, -0.87413623, -0.17664144]])

  
 
  • 1
  • 2
  • 3

12.将第五题的result修改为3x3矩阵

result = result.reshape(3,3)

  
 
  • 1

13.对上一题生成的result取转置

result.T

  
 
  • 1
array([[1, 4, 7], [2, 5, 8], [3, 6, 9]])

  
 
  • 1
  • 2
  • 3

14.查看数据类型

result.dtype
#dtype('int64')

  
 
  • 1
  • 2
dtype('int32')

  
 
  • 1

15.查看内存占用

#方法一:直接查看
print(result.nbytes)
#方法2手动计算
print(result.itemsize * 9)

  
 
  • 1
  • 2
  • 3
  • 4
36
36

  
 
  • 1
  • 2

16.将数据类型修改为float

result = result.astype(float)

  
 
  • 1

17.提取第三行第三列的元素

result[2,2]

  
 
  • 1
9.0

  
 
  • 1

18.将第三行第三列的元素放大十倍

result[2,2] = result[2,2] * 10

  
 
  • 1

19.提取result中的所有偶数

result[result % 2 == 0]

  
 
  • 1
array([ 2.,  4.,  6.,  8., 90.])

  
 
  • 1

20.将result中所有奇数修改为666

result[result % 2 == 1] = 666

  
 
  • 1

21.创建主对角线都是5的5x5矩阵

result = np.diag([5,5,5,5,5])
result

  
 
  • 1
  • 2
array([[5, 0, 0, 0, 0], [0, 5, 0, 0, 0], [0, 0, 5, 0, 0], [0, 0, 0, 5, 0], [0, 0, 0, 0, 5]])

  
 
  • 1
  • 2
  • 3
  • 4
  • 5

22.交换第一列与第二列

a = result[:, [1,0,2,3,4]]

  
 
  • 1

23.交换第一行与第二行

b = result[[0,1,2,4,3], :]

  
 
  • 1

24.判断两个矩阵是否有任何元素不同(使用22,23两题得到的矩阵)

print((a == b).all())

  
 
  • 1
False

  
 
  • 1

25.计算两个矩阵不同元素的个数(使用22,23两题得到的矩阵)

len(np.argwhere(a != b))

  
 
  • 1
8

  
 
  • 1

26.找到两个矩阵不同元素的位置(使用22,23两题得到的矩阵)

np.argwhere(a != b)

  
 
  • 1
array([[0, 0], [0, 1], [1, 0], [1, 1], [3, 3], [3, 4], [4, 3], [4, 4]], dtype=int64)

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

27.矩阵乘法(使用22,23两题得到的矩阵)

np.dot(a,b)

  
 
  • 1
array([[ 0, 25,  0,  0,  0], [25,  0,  0,  0,  0], [ 0,  0, 25,  0,  0], [ 0,  0,  0,  0, 25], [ 0,  0,  0, 25,  0]])

  
 
  • 1
  • 2
  • 3
  • 4
  • 5

28.矩阵对应元素相乘(使用22,23两题得到的矩阵)

print(np.multiply(a,b))
print('========方法2========')
print(a * b) #方法2

  
 
  • 1
  • 2
  • 3
[[ 0  0  0  0  0]
 [ 0  0  0  0  0]
 [ 0  0 25  0  0]
 [ 0  0  0  0  0]
 [ 0  0  0  0  0]]
========方法2========
[[ 0  0  0  0  0]
 [ 0  0  0  0  0]
 [ 0  0 25  0  0]
 [ 0  0  0  0  0]
 [ 0  0  0  0  0]]

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

29.计算行列式(使用21题生成的矩阵)

np.linalg.det(result)

  
 
  • 1
3124.999999999999

  
 
  • 1

30.矩阵求逆(使用21题生成的矩阵)

np.linalg.inv(result)

  
 
  • 1
array([[0.2, 0. , 0. , 0. , 0. ], [0. , 0.2, 0. , 0. , 0. ], [0. , 0. , 0.2, 0. , 0. ], [0. , 0. , 0. , 0.2, 0. ], [0. , 0. , 0. , 0. , 0.2]])

  
 
  • 1
  • 2
  • 3
  • 4
  • 5

31.将22与23题生成的np.array对象修改为np.matrix对象

a = np.matrix(a)
b = np.matrix(b)

  
 
  • 1
  • 2

32.计算上一题生成的两个np.matrix格式矩阵的对应元素乘积(对比异同)

np.multiply(a,b)

  
 
  • 1
matrix([[ 0,  0,  0,  0,  0], [ 0,  0,  0,  0,  0], [ 0,  0, 25,  0,  0], [ 0,  0,  0,  0,  0], [ 0,  0,  0,  0,  0]])

  
 
  • 1
  • 2
  • 3
  • 4
  • 5

33.对31题生成的两个np.matrix格式矩阵做矩阵乘法(对比异同)

a * b

  
 
  • 1
matrix([[ 0, 25,  0,  0,  0], [25,  0,  0,  0,  0], [ 0,  0, 25,  0,  0], [ 0,  0,  0,  0, 25], [ 0,  0,  0, 25,  0]])

  
 
  • 1
  • 2
  • 3
  • 4
  • 5

34.将两个矩阵按照行拼接

np.hstack((a,b))

  
 
  • 1
matrix([[0, 5, 0, 0, 0, 5, 0, 0, 0, 0], [5, 0, 0, 0, 0, 0, 5, 0, 0, 0], [0, 0, 5, 0, 0, 0, 0, 5, 0, 0], [0, 0, 0, 5, 0, 0, 0, 0, 0, 5], [0, 0, 0, 0, 5, 0, 0, 0, 5, 0]])

  
 
  • 1
  • 2
  • 3
  • 4
  • 5

35.将两个矩阵按照列拼接

np.vstack((a,b))

  
 
  • 1
matrix([[0, 5, 0, 0, 0], [5, 0, 0, 0, 0], [0, 0, 5, 0, 0], [0, 0, 0, 5, 0], [0, 0, 0, 0, 5], [5, 0, 0, 0, 0], [0, 5, 0, 0, 0], [0, 0, 5, 0, 0], [0, 0, 0, 0, 5], [0, 0, 0, 5, 0]])

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

36.思考下面代码运行后new的结果

new = np.pad(result,pad_width = 1,constant_values=1)

  
 
  • 1

37.找到new中大于1的元素的位置

np.argwhere(new > 1)

  
 
  • 1
array([[1, 1], [2, 2], [3, 3], [4, 4], [5, 5]], dtype=int64)

  
 
  • 1
  • 2
  • 3
  • 4
  • 5

38.将new中大于1的元素修改为9

new[new > 1] = 8
new

  
 
  • 1
  • 2
array([[1, 1, 1, 1, 1, 1, 1], [1, 8, 0, 0, 0, 0, 1], [1, 0, 8, 0, 0, 0, 1], [1, 0, 0, 8, 0, 0, 1], [1, 0, 0, 0, 8, 0, 1], [1, 0, 0, 0, 0, 8, 1], [1, 1, 1, 1, 1, 1, 1]])

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

39.对new按列求和

np.sum(new, 0)

  
 
  • 1
array([ 7, 10, 10, 10, 10, 10,  7])

  
 
  • 1

40.对new按行求和

np.sum(new, 1)

  
 
  • 1
array([ 7, 10, 10, 10, 10, 10,  7])

  
 
  • 1
import numpy as np
import pandas as pd
import warnings
warnings.filterwarnings("ignore")

  
 
  • 1
  • 2
  • 3
  • 4

41 生成指定格式数据

备注:使用numpy生成6行6列的二维数组,值为1-100随机数

data = np.random.randint(1,100, [6,6])
data

  
 
  • 1
  • 2
array([[64, 81,  4, 42, 31, 32], [73, 24, 12, 93, 67, 87], [95,  1, 61, 60, 63, 45], [56, 22, 75, 50, 63, 38], [67, 82, 39, 64, 12, 77], [77, 41, 52, 53,  7,  7]])

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

42 找到每列的最大值

np.amax(data, axis=0)

  
 
  • 1
array([95, 82, 75, 93, 67, 87])

  
 
  • 1

43 找到每行的最小值

np.amin(data, axis=1)

  
 
  • 1
array([ 4, 12,  1, 22, 12,  7])

  
 
  • 1

44 提取data每个元素的出现次数

np.unique(data,return_counts=True)

  
 
  • 1
(array([ 1,  4,  7, 12, 22, 24, 31, 32, 38, 39, 41, 42, 45, 50, 52, 53, 56, 60, 61, 63, 64, 67, 73, 75, 77, 81, 82, 87, 93, 95]),
 array([1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 2, 1, 1, 1, 1, 1], dtype=int64))

  
 
  • 1
  • 2
  • 3
  • 4

45 获取data每行元素的大小排名

data.argsort()

  
 
  • 1
array([[2, 4, 5, 3, 0, 1], [2, 1, 4, 0, 5, 3], [1, 5, 3, 2, 4, 0], [1, 5, 3, 0, 4, 2], [4, 2, 3, 0, 5, 1], [4, 5, 1, 2, 3, 0]], dtype=int64)

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

46 将数组按行重复一次

np.repeat(data, 2, axis=0)

  
 
  • 1
array([[64, 81,  4, 42, 31, 32], [64, 81,  4, 42, 31, 32], [73, 24, 12, 93, 67, 87], [73, 24, 12, 93, 67, 87], [95,  1, 61, 60, 63, 45], [95,  1, 61, 60, 63, 45], [56, 22, 75, 50, 63, 38], [56, 22, 75, 50, 63, 38], [67, 82, 39, 64, 12, 77], [67, 82, 39, 64, 12, 77], [77, 41, 52, 53,  7,  7], [77, 41, 52, 53,  7,  7]])

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

47 去除数组的重复行

np.unique(data,axis = 0)

  
 
  • 1
array([[56, 22, 75, 50, 63, 38], [64, 81,  4, 42, 31, 32], [67, 82, 39, 64, 12, 77], [73, 24, 12, 93, 67, 87], [77, 41, 52, 53,  7,  7], [95,  1, 61, 60, 63, 45]])

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

48 不放回抽样

备注:从data的第一行中不放回抽3个元素

np.random.choice(data[0:1][0], 3, replace=False)

  
 
  • 1
array([31, 42, 81])

  
 
  • 1

49 提取data第二行中不含第三行的元素的元素

a = data[1:2]
b = data[2:3]
index=np.isin(a,b)
array=a[~index]
array

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
array([73, 24, 12, 93, 67, 87])

  
 
  • 1

50 判断data是否有空行

(~data.any(axis=1)).any()

  
 
  • 1
False

  
 
  • 1

51 将每行升序排列

data.sort(axis = 1)
data

  
 
  • 1
  • 2
array([[ 4, 31, 32, 42, 64, 81], [12, 24, 67, 73, 87, 93], [ 1, 45, 60, 61, 63, 95], [22, 38, 50, 56, 63, 75], [12, 39, 64, 67, 77, 82], [ 7,  7, 41, 52, 53, 77]])

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

52 将data的数据格式修改为float

data1 = data.astype(float)

  
 
  • 1

53 将小于5的元素修改为nan

data1[data1 < 5] = np.nan
data1

  
 
  • 1
  • 2
array([[nan, 31., 32., 42., 64., 81.], [12., 24., 67., 73., 87., 93.], [nan, 45., 60., 61., 63., 95.], [22., 38., 50., 56., 63., 75.], [12., 39., 64., 67., 77., 82.], [ 7.,  7., 41., 52., 53., 77.]])

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

54 删除data1含有nan的行

data1 = data1[~np.isnan(data1).any(axis=1), :]

  
 
  • 1
data1

  
 
  • 1
array([[12., 24., 67., 73., 87., 93.], [22., 38., 50., 56., 63., 75.], [12., 39., 64., 67., 77., 82.], [ 7.,  7., 41., 52., 53., 77.]])

  
 
  • 1
  • 2
  • 3
  • 4

55 找出data1第一行出现频率最高的值

vals, counts = np.unique(data1[0,:], return_counts=True)
print(vals[np.argmax(counts)])

  
 
  • 1
  • 2
12.0

  
 
  • 1

56 找到data1中与100最接近的数字

a = 100
data1.flat[np.abs(data1 - a).argmin()]

  
 
  • 1
  • 2
93.0

  
 
  • 1

57 data1每一行的元素减去每一行的平均值

data1 - data1.mean(axis=1, keepdims=True)

  
 
  • 1
array([[-47.33333333, -35.33333333,   7.66666667,  13.66666667, 27.66666667,  33.66666667], [-28.66666667, -12.66666667,  -0.66666667,   5.33333333, 12.33333333,  24.33333333], [-44.83333333, -17.83333333,   7.16666667,  10.16666667, 20.16666667,  25.16666667], [-32.5 , -32.5 ,   1.5 ,  12.5 , 13.5 ,  37.5 ]])

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

58 将data1归一化至区间[0,1]

a = np.max(data1) - np.min(data1)
(data1 - np.min(data1)) / a

  
 
  • 1
  • 2
array([[0.05813953, 0.19767442, 0.69767442, 0.76744186, 0.93023256, 1. ], [0.1744186 , 0.36046512, 0.5 , 0.56976744, 0.65116279, 0.79069767], [0.05813953, 0.37209302, 0.6627907 , 0.69767442, 0.81395349, 0.87209302], [0. , 0. , 0.39534884, 0.52325581, 0.53488372, 0.81395349]])

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

59 将data1标准化

mu = np.mean(data1, axis=0)
sigma = np.std(data1, axis=0)
(data1 - mu) / sigma

  
 
  • 1
  • 2
  • 3
array([[-0.22941573, -0.23111136,  1.09030457,  1.31008094,  1.30769231, 1.61229232], [ 1.60591014,  0.84740834, -0.52145001, -0.7145896 , -0.53846154, -0.96737539], [-0.22941573,  0.92444546,  0.80587729,  0.59549133,  0.53846154, 0.03582872], [-1.14707867, -1.54074243, -1.37473184, -1.19098267, -1.30769231, -0.68074565]])

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

60 将data1存储至本地

np.savetxt('test.txt',data1)

  
 
  • 1
import numpy as np
import pandas as pd
import warnings
warnings.filterwarnings("ignore")

  
 
  • 1
  • 2
  • 3
  • 4

61.如何获得两个数组之间的相同元素

输入:

arr1 = np.random.randint(10,6,6)

arr2 = np.random.randint(10,6,6)

arr1 = np.random.randint(1,10,10)
arr2 = np.random.randint(1,10,10)

  
 
  • 1
  • 2
print("arr1: %s"%arr1)
print("arr2: %s"%arr2)
np.intersect1d(arr1,arr2)

  
 
  • 1
  • 2
  • 3
arr1: [1 7 4 9 2 3 8 8 2 9]
arr2: [5 7 7 2 3 7 4 8 4 1] array([1, 2, 3, 4, 7, 8])

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

62.如何从一个数组中删除另一个数组存在的元素

输入:

arr1 = np.random.randint(1,10,10)

arr2 = np.random.randint(1,10,10)

arr1 = np.random.randint(1,10,10)
arr2 = np.random.randint(1,10,10)
print("arr1: %s"%arr1)
print("arr2: %s"%arr2)
np.setdiff1d(arr1,arr2)

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
arr1: [3 7 6 4 4 8 6 2 4 6]
arr2: [7 2 2 4 5 5 3 7 2 1] array([6, 8])

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

63.如何修改一个数组为只读模式

输入:

arr1 = np.random.randint(1,10,10)

arr1 = np.random.randint(1,10,10)
arr1.flags.writeable = False

  
 
  • 1
  • 2
#尝试修改会报错!
arr1[0] = 6

  
 
  • 1
  • 2
---------------------------------------------------------------------------

ValueError Traceback (most recent call last)

<ipython-input-69-ddcf305e5efb> in <module> 1 #尝试修改会报错!
----> 2 arr1[0] = 6


ValueError: assignment destination is read-only

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

64.如何将list转为numpy数组

输入:

a = [1,2,3,4,5]

a = [1,2,3,4,5]
np.array(a)

  
 
  • 1
  • 2

65.如何将pd.DataFrame转为numpy数组

输入:

df = pd.DataFrame({‘A’:[1,2,3],‘B’:[4,5,6],‘C’:[7,8,9]})

df = pd.DataFrame({'A':[1,2,3],'B':[4,5,6],'C':[7,8,9]})
print(df)
print(df.values)

  
 
  • 1
  • 2
  • 3

66.如何使用numpy进行描述性统计分析

输入:

arr1 = np.random.randint(1,10,10)

arr2 = np.random.randint(1,10,10)

arr1 = np.random.randint(1,10,10)
arr2 = np.random.randint(1,10,10)

print("arr1的平均数为:%s" %np.mean(arr1))
print("arr1的中位数为:%s" %np.median(arr1))
print("arr1的方差为:%s" %np.var(arr1))
print("arr1的标准差为:%s" %np.std(arr1))
print("arr1,arr的相关性矩阵为:%s" %np.cov(arr1,arr2))
print("arr1,arr的协方差矩阵为:%s" %np.corrcoef(arr1,arr2))

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

67.如何使用numpy进行概率抽样

输入:

arr = np.array([1,2,3,4,5])

arr = np.array([1,2,3,4,5])
np.random.choice(arr,10,p = [0.1,0.1,0.1,0.1,0.6])

  
 
  • 1
  • 2

68.如何创建副本

输入:

arr = np.array([1,2,3,4,5])

#对副本数据进行修改,不会影响到原始数据
arr = np.array([1,2,3,4,5])
arr1 = arr.copy()

  
 
  • 1
  • 2
  • 3

69.如何对数组切片

输入:
arr = np.arange(10)

备注:从索引2开始到索引8停止,间隔为2

arr = np.arange(10)
a = slice(2,8,2)
arr[a] #等价于arr[2:8:2]

  
 
  • 1
  • 2
  • 3
array([2, 4, 6])

  
 
  • 1

70.如何使用NumPy操作字符串

输入:

str1 = [‘I love’]

str2 = [’ Python’]

#拼接字符串
str1 = ['I love']
str2 = [' Python']
print(np.char.add(str1,str2))

#大写首字母
str3 = np.char.add(str1,str2)
print(np.char.title(str3))

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
['I love Python']
['I Love Python']

  
 
  • 1
  • 2

71.如何对数据向上/下取整

输入:

arr = np.random.uniform(0,10,10)

arr = np.random.uniform(0,10,10)
print(arr)
###向上取整
print(np.ceil(arr))
###向下取整
print(np.floor(arr) )

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
[7.93163895 0.25298605 8.03086361 6.60320156 8.03587266 2.22664371
 9.18459953 9.2502519  7.75398358 4.22163385]
[ 8.  1.  9.  7.  9.  3. 10. 10.  8.  5.]
[7. 0. 8. 6. 8. 2. 9. 9. 7. 4.]

  
 
  • 1
  • 2
  • 3
  • 4

72.如何取消默认科学计数显示数据

np.set_printoptions(suppress=True)

  
 
  • 1

73.如何使用NumPy对二维数组逆序

输入:

arr = np.random.randint(1,10,[3,3])

arr = np.random.randint(1,10,[3,3])
print(arr)
print('列逆序')
print(arr[:, -1::-1])
print('行逆序')
print(arr[-1::-1, :])

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
[[3 1 1]
 [8 7 2]
 [4 4 8]]
列逆序
[[1 1 3]
 [2 7 8]
 [8 4 4]]
行逆序
[[4 4 8]
 [8 7 2]
 [3 1 1]]

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

74.如何使用NumPy根据位置查找元素

输入:

arr1 = np.random.randint(1,10,5)

arr2 = np.random.randint(1,20,10)

备注:在arr2中根据arr1中元素以位置查找

arr1 = np.random.randint(1,10,5)
arr2 = np.random.randint(1,20,10)
print(arr1)
print(arr2)
print(np.take(arr2,arr1))

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
[9 6 5 4 9]
[13 14  4 16  4 10 15  6  5  3]
[ 3 15 10  4  3]

  
 
  • 1
  • 2
  • 3

75.如何使用numpy求余数

输入:

a = 10

b = 3

np.mod(a,b)

  
 
  • 1
---------------------------------------------------------------------------

TypeError Traceback (most recent call last)

<ipython-input-76-2a4695c40758> in <module>
----> 1 np.mod(a,b)


TypeError: unsupported operand type(s) for %: 'slice' and 'int'

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

76.如何使用NumPy进行矩阵SVD分解

输入:

A = np.random.randint(1,10,[3,3])

np.linalg.svd(A)

  
 
  • 1

77.如何使用NumPy多条件筛选数据

输入:

arr = np.random.randint(1,20,10)

arr = np.random.randint(1,20,10)
print(arr[(arr>1)&(arr<7)&(arr%2==0)])

  
 
  • 1
  • 2
[4]

  
 
  • 1

78.如何使用NumPy对数组分类

输入:

arr = np.random.randint(1,20,10)

备注:将大于等于7,或小于3的元素标记为1,其余为0

arr = np.random.randint(1,20,10)
print(arr)
print(np.piecewise(arr, [arr < 3, arr >= 7], [-1, 1]))

  
 
  • 1
  • 2
  • 3
[17 16  1  1  7  2  5  3 13 16]
[ 1  1 -1 -1  1 -1  0  0  1  1]

  
 
  • 1
  • 2

79如何使用NumPy压缩矩阵

输入:

arr = np.random.randint(1,10,[3,1])

备注:从数组的形状中删除单维度条目,即把shape中为1的维度去掉

arr = np.random.randint(1,10,[3,1])
print(arr)
print(np.squeeze(arr))

  
 
  • 1
  • 2
  • 3
[[7]
 [9]
 [1]]
[7 9 1]

  
 
  • 1
  • 2
  • 3
  • 4

80.如何使用numpy求解线性方程组

输入:

A = np.array([[1, 2, 3], [2, -1, 1], [3, 0, -1]])

b = np.array([9, 8, 3])

求解Ax = b

A = np.array([[1, 2, 3], [2, -1, 1], [3, 0, -1]])
b = np.array([9, 8, 3])
x = np.linalg.solve(A, b)
print(x)

  
 
  • 1
  • 2
  • 3
  • 4
[ 2. -1.  3.]

  
 
  • 1

文章来源: beishan.blog.csdn.net,作者:北山啦,版权归原作者所有,如需转载,请联系作者。

原文链接:beishan.blog.csdn.net/article/details/112769471

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。