我想通过添加行来构建矩阵,从:
开始enter_definition=setText(dico.RechercherMot(mot))
得到:
//JOptionPane.showMessageDialog(null,"votre mot a été trouvé avec succès ","reussite",JOptionPane.INFORMATION_MESSAGE);
}
}
private void entrer_motActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
/* Set the Nimbus look and feel */
//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
* For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
*/
try {
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(RechercherMot.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(RechercherMot.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(RechercherMot.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(RechercherMot.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}
//</editor-fold>
/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new RechercherMot().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JTextArea entrer_definition;
private javax.swing.JTextField entrer_mot;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JPanel jPanel1;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JButton valider;
// End of variables declaration
}
//management function code
public void RechercherMot(String mot){
String ret="select * from dictionnaire where mot=?";
try {
PreparedStatement ps = (PreparedStatement) ConnectionDico.getCon().prepareStatement(ret);
ps.setString(1,mot);
//execution
ResultSet resultat= ps.executeQuery();
while(resultat.next()){
System.out.println("mot = " +resultat.getString("mot")+" "+"definition = "+resultat.getString("definition")+" ");
JOptionPane.showMessageDialog(null,"votre mot a été trouvé avec succès et sa définition est la suivante:\n"+" mot = " +resultat.getString("mot")+" "+"/ definition = "+resultat.getString("definition")+" ","reussite",JOptionPane.INFORMATION_MESSAGE);
}
} catch (SQLException ex) {
Logger.getLogger(GestionDico.class.getName()).log(Level.SEVERE, null, ex);
JOptionPane.showMessageDialog(null, "le mot n'a pas été retrouvé dans le dictionnaire", "Erreur", JOptionPane.ERROR_MESSAGE);
}
}
}
使用此代码:
[ 5 20 31 32 36 3 10 25 27 40]
[ 3 10 25 27 40 18 19 20 40 41]
[18 19 20 40 41 6 22 26 29 48]
[ 6 22 26 29 48 8 11 23 27 35]
print(row.shape)返回(10,)。我尝试使用row.T但它也失败了。 你有什么建议吗?
非常感谢! 再见 法比奥
答案 0 :(得分:1)
根据docs:
必须具有正确的形状(与arr形状相同,不包括轴)。如果未指定axis,则值可以是任何形状,并在使用前展平。
尝试添加方括号:
arr = np.append(arr, [row], axis=0)
在这种情况下,arr
和[row]
的维度数量将相同。
答案 1 :(得分:0)
从您的开始的复制粘贴开始
In [418]: vstr = """[[5 20 31 32 36 3 10 25 27 40]
...: [3 10 25 27 40 18 19 20 40 41]
...: [18 19 20 40 41 6 22 26 29 48]
...: [6 22 26 29 48 8 11 23 27 35]]"""
In [420]: vstr=','.join(vstr.split())
In [421]: vstr
Out[421]: '[[5,20,31,....]]'
In [422]: vlist=json.loads(vstr)
In [423]: vlist
Out[423]:
[[5, 20, 31, 32, 36, 3, 10, 25, 27, 40],
[3, 10, 25, 27, 40, 18, 19, 20, 40, 41],
[18, 19, 20, 40, 41, 6, 22, 26, 29, 48],
[6, 22, 26, 29, 48, 8, 11, 23, 27, 35]]
我现在有一份清单。
将其转换为数组的最简单方法是将其传递给np.array
In [424]: arr=np.array(vlist)
In [425]: arr
Out[425]:
array([[ 5, 20, 31, 32, 36, 3, 10, 25, 27, 40],
[ 3, 10, 25, 27, 40, 18, 19, 20, 40, 41],
[18, 19, 20, 40, 41, 6, 22, 26, 29, 48],
[ 6, 22, 26, 29, 48, 8, 11, 23, 27, 35]])
如果这些子列表的来源是某个过程,请执行
alist=[]
for line in vlist:
alist.append(line)
arr = np.array(alist)
使用数组append
是可能的,但速度较慢,您必须小心尺寸。 append
只是concatenate
,它接受2个参数,并确保它们至少为1d。它真的意味着在数组的末尾添加一个值。
如果使用逐行连接,您应该采取以下措施:
arr = np.empty((0,10),int)
for line in vlist:
arr = np.concatenate([arr, np.atleast_2d(line)],axis=0)
arr = np.append(arr, np.atleast_2d(line), axis=0)
也有效,但模糊了基本细节。 arr = np.vstack((arr, line))
也是如此。还有其他方法可以将line
转换为所需的2d数组。 [line]
建议的@SphDev
是另一个。