Python数据分析(八)-xrange,range,arange与np.where

最近在出差,好久没有写了,继续…

range([start,] stop[, step])根据start与stop指定的范围以及step设定的步长,生成一个序列.
range多用作循环,range(0,10)返回一个range对象,如想返回一个list,前面加上list转换

In[15]: range(5)
Out[15]:range(0, 5)

In [13]:list(range(5))
Out[13]:[0, 1, 2, 3, 4]

arange是numpy模块中的函数,使用前需要先导入此模块,arange(3):返回array类型对象。
【注:range()中的步长不能为小数,但是np.arange()中的步长可以为小数】

import numpy as np
np.arange(3)

Out[20]:
array([0, 1, 2])

xrange()也是用作循环,只是xrang(0,10)不返回list,返回xrange对象。每次调用返回其中的一个值。 返回很大的数的时候或者频繁的需要break时候,xrange性能更好。
【注意:python3.x中把xrange()取消了】

np.where

官网:https://docs.scipy.org/doc/numpy/reference/generated/numpy.where.html

numpy.where(c这里写代码片ondition[, x, y])
这里x,y是可选参数,condition是条件,这三个输入参数都是array_like的形式;而且三者的维度相同。当conditon的某个位置的为true时,输出x的对应位置的元素,否则选择y对应位置的元素;如果只有参数condition,则函数返回为true的元素的索引坐标信息信息;

In [75]:
np.where(
        [[True, False], [True, True]],
        [[1, 2], [3, 4]],
        [[9, 8], [7, 6]])
Out[75]:
array([[1, 8], [3, 4]])

x=[[1, 2], [3, 4]]
y=[[9, 8], [7, 6]]
当true返回x, false返回y

In [72]:
x = np.arange(9.).reshape(3, 3)
print (x)
type(x)

Out[72]:
[[ 0. 1. 2.] [ 3. 4. 5.] [ 6. 7. 8.]]
numpy.ndarray



In [74]:
np.where( x > 5 )
Out[74]:
(array([2, 2, 2], dtype=int64), array([0, 1, 2], dtype=int64))

array([2, 2, 2] 表示这三个元素是在第三行array([0, 1, 2] 表示是第三行元素的序列

如果更改为x>0,则表示的横纵坐标信息会更加明显

np.where(x>0)

(array([0, 0, 1, 1, 1, 2, 2, 2], dtype=int64),
 array([1, 2, 0, 1, 2, 0, 1, 2], dtype=int64))
点赞