如何修复此错误“ numpy.ndarray”对象,在下面的代码中没有属性“ append”

时间:2019-04-20 17:21:45

标签: python numpy append

返回此错误: 'numpy.ndarray'对象没有属性'append'

class1 = np.array([]) #creates 2 empty arrays
class2 = np.array([])

#yhat_tr is a vector(1 column, 100 rows) = numpy.ndarray
for i in yhat_tr: 
  if i < 0:
    class1.append([i]) #insert the iten in the array class1 or class2
  else:
    class2.append([i])

我想在循环内对iten求值后立即在class1或class2数组中插入新的iten数组。 之后,我将尝试将结果打印在具有2种颜色的散点图上,以便可以直观地识别class1和class2元素。

4 个答案:

答案 0 :(得分:1)

如@Alex所述,numpy数组没有append方法。您可以使用他的建议使用numpy append方法,或者您可以将类变量定义为列表,并在循环后使用append将它们转换为数组,如下面的代码所示。

class1 = []
class2 = []

#yhat_tr is a vector(1 column, 100 rows) = numpy.ndarray
for i in yhat_tr: 
  if i < 0:
    class1.append([i]) #insert the iten in the array class1 or class2
  else:
    class2.append([i])

class1 = np.array(class1)
class2 = np.array(class2)

答案 1 :(得分:0)

快速浏览documentation会发现np.ndarray对象没有功能append,它是np本身的功能:

class1 = np.append(class1, [i])

答案 2 :(得分:0)

您可以使用NumPy模块的append()方法添加NumPy数组元素。

append的语法如下:

ExternalTexture texture = new ExternalTexture();

// Create an Android MediaPlayer to capture the video on the external texture's surface.
SphericalSurfaceView view = new SphericalSurfaceView(this);

exoPlayer = ExoPlayerFactory.newSimpleInstance(this);
exoPlayer.setVideoSurface(texture.getSurface());

DataSource.Factory dataSourceFactory = new DefaultDataSourceFactory(this,
    Util.getUserAgent(this, getResources().getString(R.string.app_name)));
MediaSource videoSource = new ExtractorMediaSource.Factory(dataSourceFactory).createMediaSource(
    RawResourceDataSource.buildRawResourceUri(R.raw.video_360));

exoPlayer.prepare(videoSource);
exoPlayer.setRepeatMode(Player.REPEAT_MODE_ALL);

这些值将附加在数组的末尾,并且将返回一个新的ndarray,其中包含新的和旧的值,如上所示。

轴是一个可选的整数,沿着该整数定义如何显示数组。如果未指定轴,则数组结构将被展平

答案 3 :(得分:-1)

喜欢著名的Stackoverflow如何充满判断力的海报。使它不比Facebook好多少。

您需要提高自己的游戏水平。

enter image description here