标签: numpy-ndarray

Numpy:获取一维数组元素的索引作为二维数组

我有一个像这样的 numpy 数组: [1 2 2 0 0 1 3 5]

是否可以将元素的索引作为二维数组获取?例如,上述输入的答案是[[3 4], [0 5], [1 2], [6], [], [7]]

目前我必须循环不同的值并调用numpy.where(input == i)每个值,这在输入足够大的情况下性能很差。

python numpy numpy-ndarray

10
推荐指数
4
解决办法
2783
查看次数

(Keras) ValueError:无法将 NumPy 数组转换为张量(不支持的对象类型浮点数)

我知道之前在下面的链接中已经回答了这个问题,但它不适用于我的情况。(Tensorflow - ValueError: Failed to convert a NumPy array to a Tensor (Unsupported object type float)

我的预测变量 (X) 和目标变量 (y)<class 'numpy.ndarray'>和它们的形状都是 X: (8981, 25) y: (8981, 1)

但是,我仍然收到错误消息。ValueError:无法将 NumPy 数组转换为张量(不支持的对象类型浮点数)。

请参考以下代码:

import tensorflow as tf
ndim = X.shape[1]
model = tf.keras.models.Sequential()
# model.add(tf.keras.layers.Flatten())
model.add(tf.keras.layers.Dense(36, activation = tf.nn.relu, input_dim=ndim))
model.add(tf.keras.layers.Dense(36, activation = tf.nn.relu))
model.add(tf.keras.layers.Dense(2, activation = tf.nn.softmax))
model.compile(optimizer = 'adam',
              loss = 'sparse_categorical_crossentropy',
              metrics = ['accuracy'])
model.fit(X.values, y, epochs = 5)
y_pred = model.predict([X_2019])
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激!谢谢!!!

python python-3.x keras tensorflow numpy-ndarray

10
推荐指数
1
解决办法
2万
查看次数

如何将两个 2D RFFT 数组 (FFTPACK) 相乘以与 NumPy 的 FFT 兼容?

我正在尝试将用fftpack_rfft2d()(SciPy 的 FFTPACK RFFT)转换的两个二维数组相乘,结果与我从scipy_rfft2d()(SciPy 的 FFT RFFT)得到的结果不兼容。

下图共享了脚本的输出,其中显示:

  • 两个输入数组的初始化值;
  • 使用 SciPy 对 RFFT 的 FFT 实现进行变换后的两个数组scipy_rfft2d(),然后是乘法的输出,然后使用向后变换scipy_irfft2d()
  • 使用 SciPy 的 FFTPACK 实现 RFFT 与fftpack_rfft2d()和相同的事情fftpack_irfft2d()
  • 使用该测试np.allclose()的结果检查两个乘法的结果在使用其各自的 IRFFT 实现转换回来后是否相同。

为了清楚起见,红色矩形显示逆变换 IRFFT 后的乘法结果:左侧的矩形使用 SciPy 的 FFT IRFFT;右边的矩形,SciPy 的 FFTPACK IRFFT。当与 FFTPACK 版本的乘法固定时,它们应该显示相同的数据。

我认为与 FFTPACK 版本的乘法结果不正确,因为scipy.fftpack返回结果 RFFT 数组中的实部和虚部与来自scipy.fft的 RFFT 不同:

  • 我相信来自scipy.fftpack 的 RFFT返回一个数组,其中一个元素包含实部,下一个元素包含其虚部;
  • 在 scipy.fft 的RFFT 中,每个元素都是一个复数,因此能够同时保存实部和虚部;

如果我错了,请纠正我!我还想指出,由于scipy.fftpack不提供用于转换 2D 数组的函数,例如rfft2() …

python fft scipy fftpack numpy-ndarray

10
推荐指数
1
解决办法
722
查看次数

根据音色(音调)按相似度对声音进行排序

解释

我希望能够根据声音的音色(音调)对列表中的声音集合进行排序。这是一个玩具示例,其中我手动对我创建并上传到此存储库的 12 个声音文件的声谱图进行了排序。我知道这些已正确排序,因为每个文件生成的声音与之前文件中的声音完全相同,但添加了一个效果或过滤器。

例如,声音的正确排序xy以及z

  • 声音x和y是相同的,但y有失真效果
  • 声音 y 和 z 是相同的,但 z 过滤掉高频
  • 声音x和z是一样的,但是z有失真效果,z过滤掉高频

将会x, y, z

只需查看声谱图,我就可以看到一些视觉指示符,暗示应如何对声音进行排序,但我希望通过让计算机识别这些指示符来自动化排序过程。


上图中声音的声音文件

  • 长度都相同
  • 所有相同的音符/音调
  • 一切都在同一时间开始。
  • 所有相同的幅度(响度级别)

即使所有这些条件都不成立,我希望我的排序能够工作但即使它不能解决这个问题,我也会接受最佳答案)

例如,在下图中

  • 与第一幅图像中的 MFCC_8 相比,MFCC_8 的开头发生了偏移
  • MFCC_9 与第一张图像中的 MFCC_9 相同,但有重复(因此长度是其两倍)

如果第一张图片中的 MFCC_8 和 MFCC_9 替换为下图中的 MFCC_8 和 MFCC_9,我希望声音的排序保持完全相同。

对于我的真实程序,我打算通过像这样的声音更改来分解 mp3 文件


到目前为止我的计划

这是生成本文中第一张图像的程序。我需要将函数中的代码sort_sound_files替换为一些实际上根据音色对声音文件进行排序的代码。需要完成的部分位于该存储库的底部附近和声音文件我的jupyter 笔记本中也有这段代码,其中还包括第二个示例,该示例更类似于我实际希望该程序执行的操作

import librosa
import librosa.display
import matplotlib.pyplot as plt
import numpy as np
import math …
Run Code Online (Sandbox Code Playgroud)

python audio signal-processing librosa numpy-ndarray

10
推荐指数
3
解决办法
2848
查看次数

沿着第二轴连接2个1D numpy阵列

执行

import numpy as np
t1 = np.arange(1,10)
t2 = np.arange(11,20)

t3 = np.concatenate((t1,t2),axis=1)
Run Code Online (Sandbox Code Playgroud)

结果是

Traceback (most recent call last):

  File "<ipython-input-264-85078aa26398>", line 1, in <module>
    t3 = np.concatenate((t1,t2),axis=1)

IndexError: axis 1 out of bounds [0, 1)
Run Code Online (Sandbox Code Playgroud)

为什么报告轴1超出范围?

arrays numpy concatenation index-error numpy-ndarray

9
推荐指数
4
解决办法
3万
查看次数

相交多个2D np阵列以确定区域

使用这个可重复的小例子,我到目前为止还无法从3个数组生成一个新的整数数组,这些数组包含所有三个输入数组的唯一分组.

这些数组与地形属性有关:

import numpy as np
asp = np.array([8,1,1,2,7,8,2,3,7,6,4,3,6,5,5,4]).reshape((4,4))  #aspect
slp = np.array([9,10,10,9,9,12,12,9,10,11,11,9,9,9,9,9]).reshape((4,4))  #slope
elv = np.array([13,14,14,13,14,15,16,14,14,15,16,14,13,14,14,13]).reshape((4,4)) #elevation
Run Code Online (Sandbox Code Playgroud)

我们的想法是使用GIS例程将地理轮廓分解为3个不同的属性:

  • 方位1-8(1 =朝北,2 =东北朝向等)
  • 坡度为9-12(9 =缓坡... 12 =最陡斜坡)
  • 海拔13-16(13 =最低海拔... 16 =最高海拔)

下面的小图试图描绘我所追求的结果类型(数组显示在左下方).请注意,图中给出的"答案"只是一个可能的答案.只要最终数组在每个行/列索引处包含一个标识唯一分组的整数,我就不关心结果数组中整数的最终排列.

例如,[0,1]和[0,2]处的数组索引具有相同的方面,斜率和高程,因此在结果数组中接收相同的整数标识符.

是否numpy的有一个内置的例程这种事情?

数组合图形

python numpy multidimensional-array numpy-ndarray

8
推荐指数
1
解决办法
274
查看次数

numpy.product vs numpy.prod vs ndarray.prod

我读通过numpy的文档,并且看起来功能np.prod(...),np.product(...)ndarray方法a.prod(...)都是等效的.

在样式/可读性和性能方面是否有首选版本?是否存在不同版本更为可取的不同情况?如果没有,为什么有三种独立但非常相似的方式来执行相同的操作?

python numpy numpy-ndarray

8
推荐指数
2
解决办法
4720
查看次数

Python numpy数组负索引

我对 numpy 的索引有点困惑。假设以下示例:

>>> import numpy as np
>>> x = np.arange(10)
>>> x.shape = (2,5)
>>> x
array([[0, 1, 2, 3, 4],
       [5, 6, 7, 8, 9]])
>>> x[0:-1]
array([[0, 1, 2, 3, 4]])
>>> x[1:-1]
array([], shape=(0, 5), dtype=int64)
>>> x[1:]
array([[5, 6, 7, 8, 9]])
Run Code Online (Sandbox Code Playgroud)

我感到困惑的是,我可以使用x[0:-1]. 但-1就指数而言,实际上意味着什么?我会想,那个调用x[1:-1]会给我第二行,但是如果返回一个空数组,并且得到我想要的我需要使用 x[1:]?

我有点困惑。谢谢您的帮助

python numpy scipy python-3.x numpy-ndarray

8
推荐指数
1
解决办法
9154
查看次数

PyCharm 中带有 nptyping 和 Array 的 Numpy Typehint

我尝试使用 numpy 和nptyping'sArray来做我的类型提示。

我尝试了以下方法:

enemy_hand: Array[float, 48] = np.zeros(48)
Run Code Online (Sandbox Code Playgroud)

我得到一个打字错误:

预期类型 'Array[float, Any]',改为 'ndarray'

据我了解:https: //pypi.org/project/nptyping/ 应该是这样的。

python numpy type-hinting pycharm numpy-ndarray

8
推荐指数
1
解决办法
1392
查看次数

使用 mypy 对 NumPy ndarray 进行特定类型注释

NumPy 1.20 中添加了对类型注释的支持。我试图弄清楚如何告诉 mypy 数组填充了特定类型的元素,注释np.ndarray[np.dcomplex]给出了 mypy error "ndarray" expects no type arguments, but 1 given

编辑:这个问题与numpy.ndarray 的类型提示/注释(PEP 484)不同,因为这个问题是在 4 年前提出的,当时没有任何官方支持类型提示。我问的是什么是官方的 方法,现在numpy 1.20实际上支持类型提示。https://numpy.org/doc/stable/reference/typing.html#module-numpy.typing上的文档指出,那里的最佳答案似乎只说你不应该用类型提示做的事情,而不是解释什么你应该做的。

numpy python-3.x mypy numpy-ndarray

8
推荐指数
1
解决办法
961
查看次数