np.array([])创建的数组在np.append后全部变成了一维
时间: 2024-03-04 11:49:50 浏览: 93
是的,np.array([])创建的数组默认是一维的,因此在使用np.append时,如果要将元素添加到数组的第二维或更高维,需要先将数组变为二维或更高维。可以使用np.newaxis将一维数组转换为二维数组。例如,np.array([])可以通过np.array([])[np.newaxis, :]变为二维数组。这样在使用np.append时,就可以将元素添加到第二维或更高维了。
相关问题
next_state_action = s[0,0] + np.array(change[i]) , s[0,1] + np.array(change[i]) # 有点问题np.array把列表转为数组 TypeError: list indices must be integers or slices, not tuple
这个错误是因为 s 是一个列表,而不是一个二维数组。在 Python 中,列表的索引是通过单个整数值来访问的,而不是通过元组来访问的。
为了解决这个问题,可以将 s 定义为一个二维数组,然后修改 next_state_action 的计算方式。修改后的代码如下:
```
import numpy as np
# 定义初始状态
s = np.array([[1, 1]])
# 定义移动步长
step = 1
change = [[0, -step], [0, step], [-step, 0], [step, 0]]
# 计算四个方向的状态值
F_actions = []
for i in range(4):
next_state_action = np.array([s[0, 0] + change[i][0], s[0, 1] + change[i][1]])
x1, y1 = next_state_action
F_next_state_actions = pow(x1, 2) + pow(y1, 2)
F_actions.append(F_next_state_actions)
# 取最小状态值的索引
action = np.argmin(F_actions)
# 打印输出
print('状态值:', F_actions)
print('最小状态值的索引:', action)
```
这样就可以避免 TypeError 错误了。
negEdges = np.array(self.zeroEdges)[:,0:3]#连边列表不含第四列转为数组形式 if self.directed == False: # For undirected swapped = np.array(self.zeroEdges)[:,0:3] swapped[:,1] = negEdges[:,2] swapped[:,2] = negEdges[:,1] negEdges = np.append(negEdges,swapped,axis=0) self.inputNeg = negEdges
这段代码是将图中未连接的节点对转化成位置坐标。具体来说,代码首先将未连接的节点对转化成一个二维数组 `negEdges`,其中每一行表示一对未连接的节点,包括这两个节点的编号和一个默认的权重为0。如果图是无向图,那么会将 `negEdges` 复制一份并进行修改,将每对节点的起始节点和结束节点互换,然后将这份复制的数组和原数组进行合并,得到一个包含所有未连接节点之间位置坐标的数组。最后,将这个数组赋值给 `self.inputNeg`,作为神经网络的输入。这样做是为了让神经网络学习如何区分已连接的节点对和未连接的节点对。
阅读全文