作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
有没有办法在 Numpy 中的一些方形数组 board
上构建两个 black
和 white
View ?
当然board
本身也可以是另一个数组上的 View ?
我们显然假设棋盘的等级是偶数(就像经典的 8x8 国际象棋棋盘),因为在奇数棋盘上实现所需的任务确实很容易。
我认为这并不完全可能,尽管我与以下想法非常接近:
a = np.zeros((81,))
board = a.reshape((9,9))[:8,:8]
black = a[::2]
white = a[1::2]
black += 1
white += 2
print(board)
这几乎完成了所需的工作:board
是内部阵列上的一些 8x8 View ,您可以使用其他两个 View 分别初始化黑色和白色单元格。但这个解决方案并不完美,因为两个黑色
和白色
View 还包含无用的隐藏单元。
这个问题有更好的解决办法吗?
这只是同事之间的理论挑战(而不是来自某些生产环境的“您想要实现什么?”问题)。
最佳答案
如果黑色
和白色
不需要是一维的,那么可以这样做:
board = np.zeros((18,12))[::3,::2]
# non contiguous to make it a bit intersting
m,n = board.shape
v4d = board.reshape(m//2,2,n//2,2)
black = np.einsum("ijkj->ijk",v4d)
white = np.einsum("ijkj->ijk",v4d[...,::-1])
board
# array([[0., 0., 0., 0., 0., 0.],
# [0., 0., 0., 0., 0., 0.],
# [0., 0., 0., 0., 0., 0.],
# [0., 0., 0., 0., 0., 0.],
# [0., 0., 0., 0., 0., 0.],
# [0., 0., 0., 0., 0., 0.]])
black += 1
board
# array([[1., 0., 1., 0., 1., 0.],
# [0., 1., 0., 1., 0., 1.],
# [1., 0., 1., 0., 1., 0.],
# [0., 1., 0., 1., 0., 1.],
# [1., 0., 1., 0., 1., 0.],
# [0., 1., 0., 1., 0., 1.]])
white += 2
board
# array([[1., 2., 1., 2., 1., 2.],
# [2., 1., 2., 1., 2., 1.],
# [1., 2., 1., 2., 1., 2.],
# [2., 1., 2., 1., 2., 1.],
# [1., 2., 1., 2., 1., 2.],
# [2., 1., 2., 1., 2., 1.]])
关于python - 有没有办法在 Numpy 的方板上获得 "white cells"/"black cells" View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59119818/
我是一名优秀的程序员,十分优秀!