NumPy基础操作
NumPy基础操作(1)
(注:记得在文件开头导入import numpy as np)
目录:
- 数组的创建
- 强制类型转换与切片
- 布尔型索引
- 结语
数组的创建
- 相关函数
np.array(), np.zeros(), np.zeros_like(), np.ones(), np.ones_like(), np.empty(), np.asarray()
- 调用方法
data1 = [1.2, 23, 24, 1.8]
arr1 = np.array(data1)
print(arr1)
print(arr1.ndim) #数组的维度
print(arr1.shape) #数组的形状
print((arr1.dtype)) #数组元素的数据类型 #输出结果
out:
[ 1.2 23. 24. 1.8]
1
(4,)
float64data2 = [[1, 2, 3, 4], [5, 6, 7, 9]] #如果要用array生成多维的数组必须要元素个数对称
arr2 = np.array(data2)
arr2_like = np.zeros_like(arr2) #产生形状与arr2相同的全0数组
arr4 = np.ones((3,2))
arr7 = np.asarray(data2) #将输入转换为一个ndarray数组
print(arr2);print("************")
print(arr2_like);print("************")
print(arr4);print("************")
print(arr7) #输出结果
out:
[[1 2 3 4]
[5 6 7 9]]
************
[[0 0 0 0]
[0 0 0 0]]
************
[[1. 1.]
[1. 1.]
[1. 1.]]
************
[[1 2 3 4]
[5 6 7 9]]
强制类型转换与切片
- 相关函数
array.astype(), array[x:y] #array是一个已定义的数组
np.float64, np.int64, np.string_ #数组基础数据类型 - 强制类型转换
#在生成数据时就直接指定ndarray数组的类型
arr8 = np.array([1,1,7], dtype=np.float64)
print(arr8.dtype)
print("************") #通过ndarray的方法astype更改转换数组的类型,强制类型转换
arr9 = arr8.astype(np.int64)
print(arr9.dtype)
print("************")
#Numpy的数据类型:np.object, np.string_, np.unicode_
numeric_strings = np.array(['1.23', '-9.6', ''], dtype=np.string_)
print(numeric_strings.astype(float).dtype)
print("************") #输出结果
out:
float64
************
int64
************
float64
************
- 数组切片
#数组切片是原数组的视图,对切片的任何改变都会在原始数组数据上得到体现
#for example
arr = np.arange(10)
arr_slice = arr[5:8]
arr_slice[1] = 12432
print(arr)
#输出结果:[ 0 1 2 3 4 5 12432 7 8 9]
arr_slice[:] = 187
print(arr)
#输出结果:[ 0 1 2 3 4 187 187 187 8 9] #如果你是真的想要一份数组的复制版本,你需要明显的表达出来
arr_copy = arr[:].copy()
arr_copy[:] = 1
print(arr)
print(arr_copy)
#输出结果:[ 0 1 2 3 4 187 187 187 8 9]
# [1 1 1 1 1 1 1 1 1 1] #二维数组的访问
arr2d = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(arr2d[2])
print(arr2d[0,2]) #这两种索引效果是相同的
print(arr2d[0][2])
print(arr2d[:2, 1:]) #在切片中再切片 #输出结果:[7 8 9]
#
#
# [[2 3]
# [5 6]]
布尔型索引
- 布尔型索引
names = np.array(['Bob','Joe', 'Will', 'Bob', 'Will', 'Joe', 'Jason'])
data = np.random.randn(7,4) print(names=='Bob')
print(data[names == 'Bob', 2:]) #线索出为True的行组成新的数组,再进行数组切片
#输出结果
#[ True False False True False False False]
#[[ 0.26361357 -0.98694019]
# [ 0.34286995 0.0441788 ]] mask =(names=='Bob')|(names=='Will') #在布尔型数组中Python关键之and 以及or无效
print(mask)
#输出结果
#[ True False True True True False False] #通过布尔性数组更改数组中的值
data[data < 0] = 0 #将数组中小于0的元素的值全部改为0
结语
第一次写博客排版和程序都有些粗糙,望见谅。(注:相关知识点从《用Python进行数据分析》搬运至此)
NumPy基础操作的更多相关文章
- numpy 基础操作
Numpy 基础操作¶ 以numpy的基本数据例子来学习numpy基本数据处理方法 主要内容有: 创建数组 数组维度转换 数据选区和切片 数组数据计算 随机数 数据合并 数据统计计算 In [1]: ...
- NumPy基础操作(3)——代数运算和随机数
NumPy基础操作(3)--代数运算和随机数 (注:记得在文件开头导入import numpy as np) 目录: NumPy在矩阵运算中的应用 常用矩阵运算函数介绍 编程实现 利用NumPy生成随 ...
- NumPy基础操作(2)
NumPy基础操作(2) (注:记得在文件开头导入import numpy as np) 目录: 写在前面 转置和轴对换 NumPy常用函数 写在前面 本篇博文主要讲解了普通转置array.T.轴对换 ...
- [笔记]NumPy基础操作
学机器学习做点小笔记,都是Python的NumPy库的基本小操作,图书馆借的书看到的,怕自己还了书后忘了,就记下来. 一般习惯导入numpy时使用 import numpy as np ,不要直接im ...
- 学习Numpy基础操作
# coding:utf-8 import numpy as np from numpy.linalg import * def day1(): ''' ndarray :return: ''' ls ...
- [笔记]SciPy、Matplotlib基础操作
NumPy.SciPy.Matplotlib,Python下机器学习三大利器.上一篇讲了NumPy基础操作,这节讲讲SciPy和Matplotlib.目前接触到的东西不多,以后再遇到些比较常用的再更新 ...
- 《利用python进行数据分析》读书笔记--第四章 numpy基础:数组和矢量计算
http://www.cnblogs.com/batteryhp/p/5000104.html 第四章 Numpy基础:数组和矢量计算 第一部分:numpy的ndarray:一种多维数组对象 实话说, ...
- 利用Python进行数据分析——Numpy基础:数组和矢量计算
利用Python进行数据分析--Numpy基础:数组和矢量计算 ndarry,一个具有矢量运算和复杂广播能力快速节省空间的多维数组 对整组数据进行快速运算的标准数学函数,无需for-loop 用于读写 ...
- [转]python与numpy基础
来源于:https://github.com/HanXiaoyang/python-and-numpy-tutorial/blob/master/python-numpy-tutorial.ipynb ...
随机推荐
- tar.gz文件命名及压缩解压方法
tar.gz文件命名 tar是把文件打成一个包,并不压缩; gz是用gzip把打成包的.tar文件压缩; 所以成了一个.tar.gz的文件 压缩 # tar cvfz backup.tar.gz /x ...
- 乞讨 间隔[a,b]在见面p^k*q*^m(k>m)中数号码
标题叙述性说明: 1<=a,b<=10^18,p,q他们是素数 2<=p,q<=10^9; 求在[a,b]内能够表示为 x*p^k*q^m k > m 的数的个 ...
- MIPS之路在何方?
目前市场上还有谁想要MIPS?MIPS接下来将何去何从?如果有一家公司希望能好好地经营MIPS,应该用什么策略呢? MIPS仍然有营收来源.它还拥有ARM所没有的多执行绪技术.有人说,只要想到半导 ...
- WPF与缓动(四) 弧形缓动
原文:WPF与缓动(四) 弧形缓动 WPF与缓动(四) 弧形缓动 ...
- android 随着认识的去除率EditText(它配备了防抖效果)
Android它没有提供的类似至ios自带的输入框效果清晰(ios简单地只加属性可实现).因此,Android其中 我们要如何实现就需要这种效果用自己的定义的控件实现. 思路:能够使用一个Linear ...
- Something write in FSE 2014
Now, I find a problem, I have become my personal CSDN into a personal electronic diary. Actually, th ...
- 去掉 Windows 中控件的虚线框(当当 element == QStyle::PE_FrameFocusRect 时,直接返回,不绘制虚线框)
在 Windows 中,控件得到焦点的时候,会显示一个虚线框,很多时候觉得不好看,通过自定义 QProxyStyle 就可以把这个虚线框去掉. 1 2 3 4 5 6 7 8 9 10 11 12 1 ...
- XF相对控件布局
using System; using Xamarin.Forms; using Xamarin.Forms.Xaml; [assembly: XamlCompilation (XamlCompila ...
- linux C 内存管理方式之半动态
看到半动态申请内存,第一反应这是什么鬼? 实际上半动态内存申请很容易理解,在GNU C中使用alloca函数来实现 #include <stdlib.h> void *alloca (si ...
- 投资人的能量往往大多远远不仅于此,他能站在不同的角度和高度看问题(要早点拿投资,要舍得让出股份)——最好不要让 Leader 一边做技术、一边做管理,人的能力是有限的,精力也是有限的
摘要:在创业三年时间里作为联合创始人,虽然拿着大家均等的股份,我始终是没有什么话语权的,但是,这也给了我从旁观者的角度看清整个局面的机会.创业公司的成败绝大程度取决于技术大牛和公司 Leader, ...