[置顶] Numpy数据处理大全

标签: numpy
21人阅读 评论(0) 收藏 举报
分类:

Numpy数据处理

Author:Tonny
转载请注明出处

一、读取文件

# 数据加载
data = np.loadtxt('load/feature.txt', dtype=np.int32, delimiter=',')
# 数据保存
np.savetxt('save/feature.txt', data, fmt='%d', delimiter=',')

二、构建ndarray

  1. np.array()构造ndarray
    numpy.array()中传入数组参数,可以是一维的也可以是二维三维的。numpy 会将其转变成 ndarray 的结构。也可以是不同的数据类型,numpy会自动进行数据类型转换,转换成统一的数据类型。
vector = numpy.array([1,2,3,4])
matrix = numpy.array([[1,2,3],[4,5,6]])
vector = numpy.array([1,2,'3',4])
array(['1', '2', '3', '4'],dtype='<U21')
  1. 利用arrange,ones,zeros,random生成
# arrage生成1维的ndarray
np.arange(0, 10, 2)
# ones,zeros,random生成多维的ndarray
np.ones((2, 3, 4), dtype=np.int32)
np.zeros((3, 4))
np.random.random((2, 3))
  1. 利用 .shape 查看结构,numpy默认一维向量是列向量,0维为列,1维为行
  2. 利用 .dtype 查看类型
  3. 利用 .ndim 查看维度
  4. 利用下标[2, 5], [ : , : 5]或者[: : -1]等进行索引与切片
  5. 利用 np.newaxis将一维转化为二维
import numpy as np
print(vector.shape) # (4,)
print(vector.dtype) # dtype('int64')
print(matrix.ndim)  # 2
print(vector[:,np.newaxis]) #[[1],[2],[3],[4]]

三、运算

1. 条件运算

实现对数据的过滤

import numpy
vector = numpy.array([[5, 10, 15, 20],[1,6,12,18]])
equal_to_ten = (vector > 10)
print(equal_to_ten)
print(vector[equal_to_ten])
equal_to_ten_and_five = (vector > 10) | (vector == 5)
print(equal_to_ten_and_five)
print(vector[equal_to_ten_and_five])
# 结果
[[False False  True  True]
 [False False  True  True]]
[15 20 12 18]
[[ True False  True  True]
 [False False  True  True]]
[ 5 15 20 12 18]

2. 类型转换

import numpy
# list 转换为 ndarray
list = [[5, 10, 15, 20],[1,6,12,18]]
matrix = numpy.array(list)
# ndarray 转换为 list
list_1 = matrix.tolist()
# ndarray 内部数据类型转换
matrix = matrix.astype(str)
print(matrix)
# 结果
[['5' '10' '15' '20']
 ['1' '6' '12' '18']]

3. 常用函数

import numpy as np
# sum()函数,全部求和,按行求和,按列求和  举一反三: min() max()
matrix = np.array([[1,2,3],
                    [4,5,6],
                    [7,8,9]])
print(matrix.sum(),matrix.sum(1),matrix.sum(0))
# reshape函数,形状的转变
arr = np.arange(15).reshape(3, 5)

4. ndarray运算,元素的运算

ndarray中的元素逐个进行运算

import numpy as np
a = np.array([[1,2,3],[4,5,6]])
b = np.array(3)
# 减法
print(a - b)
# 幂
print(a**2)
# 根号
print(np.sqrt(a))
# 指数
print(np.exp(a))
# 向下取整
print(np.floor(np.exp(a)))
# 结果
[[-2 -1  0]
 [ 1  2  3]]
[[ 1  4  9]
 [16 25 36]]
[[1.         1.41421356 1.73205081]
 [2.         2.23606798 2.44948974]]
[[  2.71828183   7.3890561   20.08553692]
 [ 54.59815003 148.4131591  403.42879349]]
[[  2.   7.  20.]
 [ 54. 148. 403.]]

5. 矩阵运算

import numpy as np
A = np.array([[1,2,3],[4,5,6]])
B = np.array([[7,8,9],[10,11,12]])
C = np.array([[7,8],[9,10],[11,12]])
D = np.array([[[0,1,2],[3,4,5]],[[6,7,8],[9,10,11]]])
# 矩阵对应位置一次相乘
print(A*B)
# 矩阵对于位置一次相减
print(A-B)
# 矩阵乘法
print(A.dot(C))
# 转置,适用于一,二维数组
print(A.T)
# 转置,适用于多维数组,正常情况为(0,1,2),(1,0,2)为第一,二维转置,(0,2,1)为第二,三维转置
print(D.transpose(1,0,2), D.transpose(0,2,1))
# 结果
[[ 7 16 27]
 [40 55 72]]
[[-6 -6 -6]
 [-6 -6 -6]]
[[ 58  64]
 [139 154]]
[[1 4]
 [2 5]
 [3 6]]
[[[ 0  1  2]
  [ 6  7  8]]
 [[ 3  4  5]
  [ 9 10 11]]] 
  [[[ 0  3]
  [ 1  4]
  [ 2  5]]
 [[ 6  9]
  [ 7 10]
  [ 8 11]]]

6. 矩阵分割与合并

矩阵的合并 hstack , vstack, column_stack , row_stack , concatenate , c_ , r_

import numpy as np
A = np.array([[1,2,3],[4,5,6]])
B = np.array([[7,8,9],[10,11,12]])
# 水平合并
print(np.hstack([A,B]))
# 垂直合并
print(np.vstack([A,B]))
# 水平分割,平均分割为3部分
print(np.hsplit(A,3))
# 水平分割,在第2,3列后面进行分割
print(np.hsplit(A,(2,3)))
# 垂直分割,平均分割为2部分
print(np.vsplit(A,2))
# 垂直分割,在第2行后面进行分割
print(np.vsplit(A,(1,2)))
# 结果
[[ 1  2  3  7  8  9]
 [ 4  5  6 10 11 12]]
[[ 1  2  3]
 [ 4  5  6]
 [ 7  8  9]
 [10 11 12]]
[array([[1],
       [4]]), array([[2],
       [5]]), array([[3],
       [6]])]
[array([[1, 2],
       [4, 5]]), array([[3],
       [6]]), array([], shape=(2, 0), dtype=int64)]
[array([[1, 2, 3]]), array([[4, 5, 6]])]
[array([[1, 2, 3]]), array([[4, 5, 6]]), array([], shape=(0, 3), dtype=int64)]

四、复制与视图

import numpy as np
A = np.array([[1,2,3],[4,5,6]])
# 简单的赋值不拷贝数组对象或它们的数据。
B = A
# 视图法:不同的数组对象分享同一个数据。创造一个新的数组对象,但指向同一数据。
B = A.view()
# 切片法:不同的数组对象分享同一个数据。创造一个新的数组对象,但指向同一数据。
B = A[:,:2]
# 深复制:创建新的数组对象和数据
B = A.copy()

注: 如果任何疑问,欢迎提问,转载请注明出处.

查看评论

Python学习-Numpy数据处理

前言 标准的python中用list保存数值,可以当数组使用。但由于列表的元素是任意对象,因此列表中保存的是对象的指针。对于数值运算来说,这种结构显然会浪费内存和CPU计算时间。 此外,pytho...
  • Dream_angel_Z
  • Dream_angel_Z
  • 2015-07-24 22:19:25
  • 1881

Python数据处理——numpy_3

通过前面两次的学习,基本上对numpy有了一定的认识,所以,接下来进一步对numpy学习。同时,最后以一个有趣的例子加深对numpy的理解。 import numpy as np xarr = np...
  • llh_1178
  • llh_1178
  • 2017-05-23 20:25:39
  • 271

1.numpy在数据处理上的速度优势

NumPy系统是Python的一种开源的数值计算扩展。我们做一个简单的向量加法,来比较numpy与纯python代码的速度差异....
  • a1212125
  • a1212125
  • 2017-09-08 16:20:06
  • 186

Numpy学习笔记之利用数组处理数据

Numpy学习笔记之利用数组处理数据 使用Numpy数组的数组表达式可以代替循环的做法,通常被称为矢量化。 1.将条件逻辑表述为逻辑运算 numpy.where是三元表达式x if condit...
  • weq27
  • weq27
  • 2017-04-16 14:35:50
  • 198

python数据分析numpy简单例子

numpy的安装: 1、pip install numpy 2、python setup.py install 安装的具体过程可以查看我的博客。也可以安装anaconda,它自带了:numpy/sci...
  • weixin_36602742
  • weixin_36602742
  • 2017-02-15 18:58:41
  • 479

numpy库常用函数记录(不断更新)

numpy常用函数记录 arange([start, ] stop[, setp,], dtype = None): 该函数返回的是一个ndarray类型数据,而不是list类型数据,该函数中sta...
  • batuwuhanpei
  • batuwuhanpei
  • 2016-03-22 23:25:36
  • 460

利用python进行数据分析(二):Numpy数组

使用前 import numpy as np Numpy的重要特点是ndarray数组,里面存储的必须是同一种对象。 data.dtype 可以查看数组data里面元素的类型。 data.s...
  • zlrai5895
  • zlrai5895
  • 2017-11-22 16:26:16
  • 118

Python-NumPy大全

告诉我们numpy是什么、它能做什么、怎么做
  • is_badboy
  • is_badboy
  • 2017-12-17 11:34:12
  • 55

Python数据分析(Pandas Numpy等)

  • 2018年01月26日 12:12
  • 77.68MB
  • 下载

利用Python做数据分析(一)--批量读取数据

import glob import pandas as pd #在哪里搜索多个表格 filelocation=&quot;F:\\&quot; #当前文件夹下搜索的文件名后缀 filef...
  • learnerthanks
  • learnerthanks
  • 2018-03-30 09:52:51
  • 22
    个人资料
    持之以恒
    等级:
    访问量: 3936
    积分: 516
    排名: 9万+
    文章存档