以下代码片段在numpy v1.24中引发警告:
import numpy as np
x = np.array(0)
y = np.array([1, 2, 3])
x_, y_ = np.broadcast_arrays(x, y)
x_.flags.writeable
# FutureWarning: future versions will not create a writeable array from broadcast_array. Set the writable flag explicitly to avoid this warning.
如何缓解?
2条答案
按热度按时间e3bfsja21#
考虑到
numpy.broadcast_arrays
的结果在未来版本的numpy中是不可写的,最好预测到变化并显式地将数组设置为只读:一旦完成,访问
x_.flags.writeable
将不会创建警告。此外,将广播数组
x_
设置为只读对基本数组x
没有任何变化:yk9xbfzb2#
使用您的代码(在numpy 1.24中)
跨距意味着
x_
的所有元素都是相同的,x
的一个元素的view
。设置元素可以工作,但也会引发警告:
在这个版本中,可写标志仍然是True:
尝试设置
x_
的3个元素,结果只有最后一个有效: