程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

Numpy 的常用操作

发布于2020-02-28 12:30     阅读(1314)     评论(0)     点赞(11)     收藏(3)


Numpy 的常用操作

1.ndarry 对象

​ NumPy 最重要的一个特点是其 N 维数组对象 ndarray,它是一系列同类型数据的集合,以 0 下标为开始进行集合中元素的索引。

ndarray 对象是用于存放同类型元素的多维数组。

import numpy as np
a = np.array([1,2,3])
print(a)
  • 1
  • 2
  • 3
[1,2,3]
  • 1
#多于一个维度
import unmpy as np
a = np.array([1,2],[1,3])   #二维数据
print(a)
  • 1
  • 2
  • 3
  • 4
[[1,2]
 [1,3]]
  • 1
  • 2

2.numpy 数组属性

属性 说明
ndarray.ndim 秩,即轴的数量或维度的数量
ndarray.shape 数组的维度,对于矩阵,n 行 m 列
ndarray.size 数组元素的总个数,相当于 .shape 中 n*m 的值
ndarray.dtype ndarray 对象的元素类型
ndarray.itemsize ndarray 对象中每个元素的大小,以字节为单位
ndarray.flags ndarray 对象的内存信息
ndarray.real ndarray元素的实部
ndarray.imag ndarray 元素的虚部
ndarray.data 包含实际数组元素的缓冲区,由于一般通过数组的索引获取元素,所以通常不需要使用这个属性。

3.创建数组

#创建一个空数组的实例
import numpy as np

x = np.empty([2,3],dtype = int)
print(x)
  • 1
  • 2
  • 3
  • 4
  • 5
[[1 1 2]
 [2 3 4]]
  • 1
  • 2
#创建一个数组实例,其中元素以0填充
import numpy as np

x = np.zeros([2,3])
print(x)
  • 1
  • 2
  • 3
  • 4
  • 5
[[0. 0. 0.]
 [0. 0. 0.]]
  • 1
  • 2
#创建一个数组实例,其中元素以1填充
import numpy as np

x = np.ones([2,3])
print(x)
  • 1
  • 2
  • 3
  • 4
  • 5
[[1. 1. 1.]
 [1. 1. 1.]]
  • 1
  • 2
# list转换为 ndarray
l = range(10)
data = np.array(l)
print(data)
print(data.shape)
print(data.ndim)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
[0 1 2 3 4 5 6 7 8 9]
(10,)
1
  • 1
  • 2
  • 3
# 嵌套序列转换为ndarray
l2 = [range(10), range(10)]
data = np.array(l2)
print(data)
print(data.shape)
  • 1
  • 2
  • 3
  • 4
  • 5
[[0 1 2 3 4 5 6 7 8 9]
 [0 1 2 3 4 5 6 7 8 9]]
(2, 10)
  • 1
  • 2
  • 3

4.生成指定维度的多维数组

np.random.rand()函数

作用:通过本函数可以返回一个或一组服从“0-1”均匀分布的数据。

import numpy as np

# 生成指定维度的随机多维数据
data = np.random.rand()
print(data)
print(type(data))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
0.8164510664879122
<class 'float'>
  • 1
  • 2
import numpy as np

# 生成指定维度的随机多维数据
data = np.random.rand(2, 3)
print(data)
print(type(data))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
[[0.3834627  0.11633125 0.98979391]
 [0.35650222 0.02752549 0.87563275]]
<class 'numpy.ndarray'>
  • 1
  • 2
  • 3

5.ndarry 数据类型

zeros_float_arr = np.zeros((3, 4), dtype=np.float64)
print(zeros_float_arr)
print(zeros_float_arr.dtype)

# astype转换数据类型
zeros_int_arr = zeros_float_arr.astype(np.int32)
print(zeros_int_arr)
print(zeros_int_arr.dtype)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
[[0. 0. 0. 0.]
 [0. 0. 0. 0.]
 [0. 0. 0. 0.]]
float64
[[0 0 0 0]
 [0 0 0 0]
 [0 0 0 0]]
int32
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

6.矢量化

# 矢量与矢量运算
arr = np.array([[1, 2, 3],
                [4, 5, 6]])

print("元素相乘:")
print(arr * arr)

print("矩阵相加:")
print(arr + arr)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
元素相乘:
[[ 1  4  9]
 [16 25 36]]
矩阵相加:
[[ 2  4  6]
 [ 8 10 12]]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
# 矢量与标量运算
print(1. / arr)
print(2. * arr)
  • 1
  • 2
  • 3
[[1.         0.5        0.33333333]
 [0.25       0.2        0.16666667]]
[[ 2.  4.  6.]
 [ 8. 10. 12.]
  • 1
  • 2
  • 3
  • 4

7.索引与切片

# 一维数组
arr1 = np.arange(10)
print(arr1)

print(arr1[2:5])     #切片[2,5)
  • 1
  • 2
  • 3
  • 4
  • 5
[0 1 2 3 4 5 6 7 8 9]
[2 3 4]
  • 1
  • 2
# 多维数组
arr2 = np.arange(12).reshape(3,4)
print(np.arange(12))
print(arr2)
  • 1
  • 2
  • 3
  • 4
[ 0  1  2  3  4  5  6  7  8  9 10 11]
[[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]
  • 1
  • 2
  • 3
  • 4
print(arr2[1])   #取第1行数据,(存在第0行)

print(arr2[0:2, 2:])   #取0-1行,2-末尾列的数据

print(arr2[:, 1:3])	   #取全部行,1-2列的数据
  • 1
  • 2
  • 3
  • 4
  • 5
[4 5 6 7]
[[2 3]
 [6 7]]
[[ 1  2]
 [ 5  6]
 [ 9 10]]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
# 条件索引

# 找出 data_arr 中 2015年后的数据
data_arr = np.random.rand(3,3)
print(data_arr)

year_arr = np.array([[2000, 2001, 2000],
                     [2005, 2002, 2009],
                     [2001, 2003, 2010]])
filtered_arr = data_arr[year_arr >= 2005]
print(filtered_arr)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
[[0.84587509 0.7485721  0.61392901]
 [0.118426   0.15692613 0.86559822]
 [0.61684712 0.67559627 0.31855494]]
[0.118426   0.86559822 0.31855494]
  • 1
  • 2
  • 3
  • 4
# 多个条件
filtered_arr = data_arr[(year_arr <= 2005) & (year_arr % 2 == 0)]
print(filtered_arr)
  • 1
  • 2
  • 3
[0.84587509 0.61392901 0.15692613]
  • 1

8.转置

arr = np.random.rand(2,3)
print(arr)
print(arr.transpose())
  • 1
  • 2
  • 3
[[0.81454632 0.7357219  0.43998078]
 [0.85256044 0.91261496 0.70490475]]
[[0.81454632 0.85256044]
 [0.7357219  0.91261496]
 [0.43998078 0.70490475]]
  • 1
  • 2
  • 3
  • 4
  • 5
arr3d = np.random.rand(2,3,4)
print(arr3d)
print('----------------------')
print(arr3d.transpose((1,0,2))) 
  • 1
  • 2
  • 3
  • 4
[[[0.3221933  0.66916063 0.38713802 0.03937986]
  [0.8930608  0.58292639 0.95851847 0.17588468]
  [0.87014127 0.6041179  0.71681229 0.04025543]]

 [[0.11391907 0.30528464 0.9571304  0.71312335]
  [0.40288582 0.23945186 0.13195369 0.18153335]
  [0.92385385 0.96543161 0.06831338 0.76078227]]]
----------------------
[[[0.3221933  0.66916063 0.38713802 0.03937986]
  [0.11391907 0.30528464 0.9571304  0.71312335]]

 [[0.8930608  0.58292639 0.95851847 0.17588468]
  [0.40288582 0.23945186 0.13195369 0.18153335]]

 [[0.87014127 0.6041179  0.71681229 0.04025543]
  [0.92385385 0.96543161 0.06831338 0.76078227]]]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

9.通用函数

arr = np.random.randn(2,3)

print(arr)
print(np.ceil(arr))
print(np.floor(arr))
print(np.rint(arr))
print(np.isnan(arr))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
[[ 0.63941681 -0.27338822  0.15902722]
 [-0.83531407  1.09764427  0.76000751]]
[[ 1. -0.  1.]
 [-0.  2.  1.]]
[[ 0. -1.  0.]
 [-1.  1.  0.]]
[[ 1. -0.  0.]
 [-1.  1.  1.]]
[[False False False]
 [False False False]]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

10.np.where

arr = np.random.randn(3,4)
print(arr)

#where(condition, x, y): 三元运算符,x if condition else y
np.where(arr > 0, 1, -1)
  • 1
  • 2
  • 3
  • 4
  • 5
[[-1.04549869  0.4085667   0.73696674  0.20716031]
 [-0.75462574  0.03474542  1.13410717  1.47171852]
 [-0.08352274 -1.21116792 -0.66311012  0.00554979]]
array([[-1,  1,  1,  1],
       [-1,  1,  1,  1],
       [-1, -1, -1,  1]])
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

11.常用的统计方法

arr = np.arange(10).reshape(5,2)
print(arr)

print(np.sum(arr))
print(np.sum(arr, axis=0))   #按列计算
print(np.sum(arr, axis=1))	 #按行计算
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
[[0 1]
 [2 3]
 [4 5]
 [6 7]
 [8 9]]
45
[20 25]
[ 1  5  9 13 17]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

12.np.all 和 np.any

arr = np.random.randn(2,3)
print(arr)

print(np.any(arr > 0))
print(np.all(arr > 0))
  • 1
  • 2
  • 3
  • 4
  • 5
[[-1.4396649  -1.70051252  0.03369428]
 [-0.36154238 -0.00512846 -1.94241229]]
True
False
  • 1
  • 2
  • 3
  • 4

13.np.unique

arr = np.array([[1, 8, 1], [2, 3, 4]])
print(arr)
print(np.unique(arr))
  • 1
  • 2
  • 3
[[1 8 1]
 [2 3 4]]
[1 2 3 4 8]
  • 1
  • 2
  • 3


所属网站分类: 技术文章 > 博客

作者:我想打人

链接:https://www.pythonheidong.com/blog/article/235899/dd08d844334ea47cae89/

来源:python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

11 0
收藏该文
已收藏

评论内容:(最多支持255个字符)