我偶然发现this post询问如何基于简单的逻辑表达式创建新的numpy
矩阵
例如
>>> import numpy as np
>>> a = np.random.randint(0, 5, size=(5, 4))
>>> a
array([[4, 2, 1, 1],
[3, 0, 1, 2],
[2, 0, 1, 1],
[4, 0, 2, 3],
[0, 0, 0, 2]])
>>> b = a < 3
>>> c = b.astype(int)
>>> c
array([[0, 1, 1, 1],
[0, 1, 1, 1],
[1, 1, 1, 1],
[0, 1, 1, 0],
[1, 1, 1, 1]])
但是我想使用更复杂的逻辑函数,例如我想创建一个分类的,一个热的编码变量,就像这样
X_Slow = (Y < 500).astype(int)
X_Medium = (Y >= 500 and Y < 1000).astype(int)
X_Fast = (Y >= 1000).astype(int)
但显然上述操作在语法上是不正确的。我试过了
X_Medium = (Y[np.logical_and(Y >= 500,Y < 1000)]).astype(int)
虽然这只返回一个数组,其中包含符合给定条件的元素数,但我想在列中同时使用“1和0”。
如何在numpy
?
答案 0 :(得分:0)
尝试使用X_Medium = np.logical_and(Y >= 500, Y < 1000).astype(int)