NumPy的基本使用

什么是NumPy

NumPy是高性能的科学计算和数据分析基础包

导入

import numpy as np

多维数组ndarray

创建一维数组

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

[1 2 3 4]

创建多维数组

data = [1, 2, 3, 4]
data1 = [data, data]
arr = np.array(data1)
print(arr)

[[1 2 3 4]
[1 2 3 4]]

快速初始化创建数组

全0数组

data = np.zeros((2, 4))
print(data)
[[ 0.  0.  0.  0.]
[ 0.  0.  0.  0.]]

全1数组

data = np.ones((2, 4))
print(data)
[[ 1.  1.  1.  1.]
[ 1.  1.  1.  1.]]

等差数列

方法一

data = np.arange(1, 10, 2)    #1-10之间获取差为2的等差数列,不包含 终止值(10)
print(data)
[1 3 5 7 9]

方法二

data = np.linspace(1, 10, 6)    #1-10之间获取6个元素,它们构成的等差数列,默认包含终止值(10)
print(data)
[  1.    2.8   4.6   6.4   8.2  10. ]

数组类型

常用的类型有float,int,bool,string,unicode

arr_int = np.array([1, 2, 3])
arr_float = np.array([1.1, 2, 3])
arr_unicode = np.array(['北京', '天津11'])
print(arr_int.dtype, arr_float.dtype, arr_unicode.dtype)
int32 float64 <U4

类型互转

arr_int = np.array([1, 2, 3])
arr_float = np.array([1.1, 2, 3])
arr_int_to_float = arr_int.astype(np.float64)
arr_float_to_int = arr_float.astype(np.int32)
print(arr_int_to_float,arr_float_to_int)
[ 1.  2.  3.] [1 2 3]   # 注:float转int后小数点会消失

数组的存储类型和如何存储的详细可以参考: https://blog.csdn.net/pipisorry/article/details/39215089#commentBox

数据索引和切片

获取第2行数据

data[1]
[4 5 6]

获取第2列数据

data[:,1]
[2 5 8]

获取第1行第2列数据

data[0,1]
2

获取前两行数据

data[:2]
[[1 2 3]
[4 5 6]]

获取第一列以后的数据

data[:,1:]
[[2 3]
[5 6]
[8 9]]

获取倒数两行数据

data[-2:]
[[4 5 6]
[7 8 9]]

数组赋值

对第二行和第二列内的元素统一赋值成0

data = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
data[:2,:2] = 0
print(data)
[[0 0 3]
[0 0 6]
[7 8 9]]

若不想改变源数组的值,可以使用copy进行赋值,涉及到浅拷贝和深拷贝的区别参考 https://www.cnblogs.com/xiaxiaoxu/p/9742452.html

以上简单分片的示例,详细可以参考 https://www.jianshu.com/p/15715d6f4dad

基本运算

相加

arr1 = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
arr2 = np.array([[2, 2, 2], [3, 3, 3], [4, 4, 4]])
arr = arr1+arr2
print(arr)
[[ 3  4  5]
[ 7  8  9]
[11 12 13]]

相乘

arr1 = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
arr2 = np.array([[2, 2, 2], [3, 3, 3], [4, 4, 4]])
arr = arr1*arr2
print(arr)
[[ 2  4  6]
[12 15 18]
[28 32 36]]

数值乘

arr1 = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
arr = arr1*10
print(arr)
[[10 20 30]
[40 50 60]
[70 80 90]]

根号

arr1 = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
arr = arr1**0.5
print(arr)
[[ 1.          1.41421356  1.73205081]
[ 2.          2.23606798  2.44948974]
[ 2.64575131  2.82842712  3.        ]]

常用的统计函数见下表

随机数

示例

import numpy.random as npr
import matplotlib.pyplot as plt


size = 1000
rn1 = npr.rand(size, 2)
rn2 = npr.randn(size)
rn3 = npr.randint(0, 10, size)
rang = [0, 1, 2, 3, 4, 5]
rn4 = npr.choice(rang, size=size)
fig, ((ax1, ax2), (ax3, ax4)) = plt.subplots(nrows=2, ncols=2, figsize=(10, 10))
ax1.hist(rn1, bins=25, stacked=True)
ax1.set_title('rand')
ax1.set_ylabel('frequency')
ax1.grid(True)


ax2.hist(rn2, bins=25, stacked=True)
ax2.set_title('randn')
ax2.grid(True)


ax3.hist(rn3, bins=25, stacked=True)
ax3.set_title('randint')
ax3.set_ylabel('frequency')
ax3.grid(True)


ax4.hist(rn4, bins=25, stacked=True)
ax4.set_title('choice')
ax4.grid(True)
plt.show()

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值