如何将行列表转换为列列表

时间:2017-12-25 13:44:10

标签: python numpy

如何在python中将[1, 2, 3]转换为[[1],[2],[3]]

另外,假设我有一个长度为m的向量,其值介于1到10之间,我想创建一个大小为mx10的矩阵,这样就知道如果向量y = 1那么矩阵应该是[0,1,0,0,0,0,0,0,0,0] 。在八度音程中,有可能,

y_train = zeros(m,output_layer_size);
for i=1:output_layer_size
   y_train(find(y==i),i)=1;
end

但是类似的函数在python中发出VisibleDeprecationWarning警告并且确实提供了所需的输出

y_train = np.zeros((y.shape[0],10))
for i in range(10):
    y_train[y==i][i]=1

2 个答案:

答案 0 :(得分:1)

在numpy中向矢量添加尺寸很容易。您有多种选择,具体取决于您的目标:

  1. 在索引中使用None通常为v = v[:, None] 设置别名的np.newaxis,

    v = [None, :]
    

    OR

    newaxis

    使用v = v.reshape((1, -1)) 可以精确控制矢量是一列还是一行。

  2. 重塑矢量:

    v = np.reshape(v, (-1, 1))
    

    OR

    -1

    我在这里确实展示了四个选项(np.reshape vs np.ndarray.reshape和行与列)。在新向量的维度中使用np.newaxis意味着"为了使其与原始"具有相同数量的元素所需的任何大小。它比明确使用形状容易得多。

  3. 使用np.expand_dims,它几​​乎完全等同于v = np.array(v, copy=False, ndmin=2) ,但功能形式。

  4. 使用ndmin=2构建新数组:

    y_train = np.zeros((y.size, m_output));
    y_train[np.arange(y.size), y] = 1
    

    此方法灵活性最小,因为它不允许您控制新轴的位置。它通常用于唯一重要的是维度,广播负责其余的事情。

  5. 问题的第二部分似乎是Python中花式索引的简单用例。这是IDEOne link,我在那里展开你的八度循环。您可以在Python中将其改写为:

    <?php
    
    session_start();
    
    if(isset($_SESSION['user_name'])!='') {
    	header('Location: index.php');
    }
    
    include_once 'init.php';
    
    //check if form is submitted
    if (isset($_POST['login'])) {
    	$email = $_POST['email'];
    	$password = $_POST['password'];
    	$records = $conn->prepare("SELECT username,email,number,password FROM users WHERE ( username='$email' OR email = '$email' OR number = '$email')");
    	$records->execute();
    	$results = $records->fetch(PDO::FETCH_ASSOC);
    
    	$message = '';
    
    	if(count($results) > 0 && password_verify($password, $results['password']) ){
    
    		$gome = $results['username'];$_SESSION['user_name'] = $gome;
    		$CookieExpire = 1000;
    		$time = 100 * 70 * 48 * 86400;
    		$time = time() + $time;
    		setcookie('username', '$gome', '$time');
    		setcookie('password', '$password', '$time');header("Location: /");
    
    	} else {
    		$message = 'Sorry, those credentials do not match';
    	}
    
    }
    
    ?>

    以下是演示的IDEOne link

答案 1 :(得分:-3)

评论中的那些对我不起作用,但是numpy.where()有效! line_free