<p>虽然已经有一个公认的答案,但它使用熊猫。获得相同效果但不使用附加库的一种相对通用的方法是:(使用numpy是因为OP指定了numpy,但是可以使用list实现相同的效果)</p>
<pre><code>import string
import numpy as np
up = string.ascii_uppercase
uppercase = list()
for letter in up:
uppercase.append(letter)
file = open("a.txt")
matrix = np.zeros((3, 3))
for line in file.readlines():
tmp = line.strip()
tmp = tmp.split(" ")
idx = uppercase.index(tmp[0])
idy = uppercase.index(tmp[1])
matrix[idx, idy] = tmp[2]
</code></pre>
<p>想法是你收集所有的字母,希望OP将自己限制在没有特殊字符的英语字母表(觉嫱嫱嫱嫱嫱嫱嫱嫱嫱°e等)。</p>
<p>我们从字母表中创建一个列表,以便可以使用<code>index</code>方法来检索索引值。一、 e.<code>uppercase.index("A")</code>是<code>0</code>。我们可以使用这些索引来填充数组。</p>
<p>逐行读取文件,删除多余字符,按空格拆分以获取:</p>
<pre><code>['A', 'A', '5']
['A', 'B', '4']
</code></pre>
<p>现在这是实际的工作部分:</p>
<pre><code> idx = uppercase.index(tmp[0])
idy = uppercase.index(tmp[1])
matrix[idx, idy] = tmp[2]
</code></pre>
<p>也就是说,对于字母“A”,<code>idx</code>的计算结果是<code>0</code>,而<code>idy</code>的计算结果也是<code>0</code>。然后<code>matrix[0,0]</code>成为值<code>tmp[2]</code>,即<code>4</code>。按照“B”的相同逻辑,我们得到<code>matrix[0,1]=5</code>。等等。</p>
<p>更普遍的情况是将<code>matrix = np.zeros((3, 3))</code>声明为<code>matrix = np.zeros((26, 26))</code>,因为英语字母表中有26个字母,OP不必只使用“ABC”,而是可能使用整个范围A-Z</p>
<p>上层程序的输出示例如下:</p>
<pre><code>>>> matrix
array([[ 5., 4., 3.],
[ 0., 2., 1.],
[ 0., 0., 0.]])
</code></pre>