TASK01,numpy入门

Numpy入门教程练习作业1打卡

数组的创建

import numpy as np

x=np.arrange(3)
print(x)
# [0 1 2 3 4 ]

创建布尔数组

import numpy as np

arr = np.full([3, 3], True, dtype=np.bool)
print(arr)
# [[ True  True  True]
#  [ True  True  True]
#  [ True  True  True]]

提取奇数

import numpy as np

arr = np.arange(10)

# 方法1
index = np.where(arr % 2 == 1)
print(arr[index])
# [1 3 5 7 9]
import numpy as np

arr = np.arange(10)
# 方法2
x = arr[arr % 2 == 1]
print(x)
# [1 3 5 7 9]

将个别元素替换为0

import numpy as np
arr = np.arange(10)
index = np.where(arr % 2 == 0)
arr[index] = 0
print(arr)
# [0 1 0 3 0 5 0 7 0 9]

在在不影响原始数组的情况下替换满足条件的元素项

import numpy as np

arr = np.arange(10)

# 用where方法
x = np.where(arr % 2 == 0, 0, arr)
print(x)
# [0 1 0 3 0 5 0 7 0 9]
print(arr)
# [0 1 2 3 4 5 6 7 8 9]

# 用copy的方法
x = np.copy(arr)
x[x % 2 == 0] = 0
print(x)
# [0 1 0 3 0 5 0 7 0 9]
print(arr)
# [0 1 2 3 4 5 6 7 8 9]

数组的操作

改变数组的形状

import numpy as np
arr = np.arange(10)
# 用reshape函数来改变函数的形状
x = np.reshape(arr, newshape=[2, 5])
print(x)
# [[0 1 2 3 4]
#  [5 6 7 8 9]]

垂直叠加两个数组

import numpy as np
a = np.arange(10).reshape([2, -1])
b = np.repeat(1, 10).reshape([2, -1])
#用来重复数字1,重复10次
print(a)
# [[0 1 2 3 4]
#  [5 6 7 8 9]]
print(b)
# [[1 1 1 1 1]
#  [1 1 1 1 1]]

# concatenate函数
print(np.concatenate([a, b], axis=0))
# [[0 1 2 3 4]
#  [5 6 7 8 9]
#  [1 1 1 1 1]
#  [1 1 1 1 1]]

# vstack函数。。。没见过(战术捂脸)
print(np.vstack([a, b]))
# [[0 1 2 3 4]
#  [5 6 7 8 9]
#  [1 1 1 1 1]
#  [1 1 1 1 1]]

水平叠加两个数组

import numpy as np
a = np.arange(10).reshape([2, -1])
b = np.repeat(1, 10).reshape([2, -1])

print(a)
# [[0 1 2 3 4]
#  [5 6 7 8 9]]
print(b)
# [[1 1 1 1 1]
#  [1 1 1 1 1]]

# 熟练运用这俩函数
print(np.concatenate([a, b], axis=1))
# [[0 1 2 3 4 1 1 1 1 1]
#  [5 6 7 8 9 1 1 1 1 1]]

# 方法2
print(np.hstack([a, b]))
# [[0 1 2 3 4 1 1 1 1 1]
#  [5 6 7 8 9 1 1 1 1 1]]

获取数组的公共项
用到intersrct1d函数

import numpy as np
a = np.array([1, 2, 3, 2, 3, 4, 3, 4, 5, 6])
b = np.array([7, 2, 10, 2, 7, 4, 9, 4, 9, 8])
x = np.intersect1d(a, b)
print(x)  # [2 4]

从一个数组a中删除另外一个数组的所有项

import numpy as np

a = np.array([1, 2, 3, 4, 5])
b = np.array([5, 6, 7, 8, 9])
x = np.setdiff1d(a, b)
print(x)  # [1 2 3 4]

获取数组a和b之间匹配的位置

import numpy as np
a = np.array([1, 2, 3, 2, 3, 4, 3, 4, 5, 6])
b = np.array([7, 2, 10, 2, 7, 4, 9, 4, 9, 8])
mask = np.equal(a, b)

# 方法1
x = np.where(mask)
print(x)  # (array([1, 3, 5, 7], dtype=int64),)

# 方法2
x = np.nonzero(mask)
print(x)  # (array([1, 3, 5, 7], dtype=int64),)

从numpy数组中提取给定范围的所有元素
比如获得5到10之间的元素

import numpy as np
a = np.array([2, 6, 1, 9, 10, 3, 27])
mask = np.logical_and(np.greater_equal(a, 5), np.less_equal(a, 10))

# 方法1
x = np.where(mask)
print(a[x])  # [ 6  9 10]

# 方法2
x = np.nonzero(mask)
print(a[x])  # [ 6  9 10]

# 方法3
x = a[np.logical_and(a >= 5, a <= 10)]
print(x)  # [ 6  9 10]

交换数组中的列1和列2,好比线代里面列变换。

import numpy as np
arr = np.arange(9).reshape(3, 3)
print(arr)
# [[0 1 2]
#  [3 4 5]
#  [6 7 8]]

x = arr[:, [2, 1, 0]]
print(x)
# [[2 1 0]
#  [5 4 3]
#  [8 7 6]]

交换行

import numpy as np

arr = np.arange(9).reshape(3, 3)
print(arr)
# [[0 1 2]
#  [3 4 5]
#  [6 7 8]]

x = arr[[1, 0, 2], :]
print(x)
# [[3 4 5]
#  [0 1 2]
#  [6 7 8]]

索引与切片
翻转二维数组的行

import numpy as np
arr = np.arange(9).reshape(3, 3)
print(arr)
# [[0 1 2]
#  [3 4 5]
#  [6 7 8]]

x = arr[::-1, :]
print(x)
# [[6 7 8]
#  [3 4 5]
#  [0 1 2]]

翻转二维数组的列

import numpy as np

arr = np.arange(9).reshape(3, 3)
print(arr)
# [[0 1 2]
#  [3 4 5]
#  [6 7 8]]

x = arr[:, ::-1]
print(x)
# [[2 1 0]
#  [5 4 3]
#  [8 7 6]]

创建一个二维数组,包含5到10之间的随机数

import numpy as np

x = np.random.randint(5, 10, [5, 3])
print(x)
# [[5 8 8]
#  [5 6 8]
#  [8 8 7]
#  [6 7 9]
#  [6 5 8]]

x = np.random.uniform(5, 10, [5, 3])
print(x)
# [[6.73675226 8.50271284 9.66526032]
#  [9.42365472 7.56513263 7.86171898]
#  [9.31718935 5.71579324 9.92067933]
#  [8.90907128 8.05704153 6.0189007 ]
#  [8.70753644 7.75056151 5.71714203]]

对数组中的元素进行格式化,比如只打印小数点后三位。

import numpy as np

rand_arr = np.random.random([5, 3])
print(rand_arr)
# [[0.33033427 0.05538836 0.05947305]
#  [0.36199439 0.48844555 0.26309599]
#  [0.05361816 0.71539075 0.60645637]
#  [0.95000384 0.31424729 0.41032467]
#  [0.36082793 0.50101268 0.6306832 ]]

np.set_printoptions(precision=3)
print(rand_arr)
# [[0.33  0.055 0.059]
#  [0.362 0.488 0.263]
#  [0.054 0.715 0.606]
#  [0.95  0.314 0.41 ]
#  [0.361 0.501 0.631]]

将numpy数组a中打印的项数限制为最多6个元素,这样可以避免冗杂。

import numpy as np

a = np.arange(15)
print(a)
# [ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14]
np.set_printoptions(threshold=6)
print(a)
# [ 0  1  2 ... 12 13 14]

打印完整的数组而不中断。

import numpy as np
a = np.arange(15)
np.set_printoptions(threshold=6)
print(a)
# [ 0  1  2 ... 12 13 14]
np.set_printoptions(threshold=np.iinfo(np.int).max)
print(a)
# [ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值